Задать вопрос
@Dimka5

Как в JS сделать что бы this ссылался на DOM элемент?

Есть у меня SVG DOM элемент "circle", создаю его так:
document.createElementNS("http://www.w3.org/2000/svg", "circle")

Нужно создать объект, создавая экземпляры которого через new, возвращался бы этот DOM элемент
То есть что бы не обращаться к нему через точку:
// Объект
function Circle() {
    this.domElement = document.createElementNS("http://www.w3.org/2000/svg", "circle");
}
// Экземпляр
var myCircle = new Circle();
// Использование
svg.appendChild(myCircle.domElement); // Вот здесь хотелось бы избежать ".domElement"


Хотелось бы что бы последняя строчка выглядела так
svg.appendChild(myCircle);

Как можно этого добиться?
То есть что бы:
this = document.createElementNS("http://www.w3.org/2000/svg", "circle");
  • Вопрос задан
  • 319 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@trubel
Если в myCircle будут другие поля кроме domElement, никак не сделать. Если же ничего кроме domElement нету, проще возвращать сразу его как выше ответил MaxKorz.
Из известных мне способов перехватывать обращения к объекту:
  • valueOf объекта может возвращать только примитивные типы, к которым domElement не относится.
  • Proxy перехватывает только обращения к полям объекта, не к самому объекту


Можно пойти другим путем и добавить в Circle функцию appendTo, который будет прикреплять себя к svg и возвращать новый svg. Тогда ваш код будет иметь вид:
svg = myCircle.appendTo(svg);
Ответ написан
akzhan
@akzhan
Не использовать данный подход.

Сделайте в вашем DOMWrapper (класс предка) методы append etc., которые инкапсулируют this.domElement.appendChild(something.domElement);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы