Что такое DOM Extension / Wrapping? - PullRequest
5 голосов
/ 16 марта 2011

У меня есть 2 основных вопроса.

  1. Имеют ли значение такие вещи, как Object?

  2. Что такое обтекание DOM?

http://perfectionkills.com/whats-wrong-with-extending-the-dom/

После прочтения этой статьи я не смог найти ничего об обертывании DOM, а также об отсутствии спецификаций и о том, что именно является расширением DOM, а что нет.

1 Ответ

8 голосов
/ 16 марта 2011

Нет, Object указывается как часть языка Javascript , в то время как DOM является API , относящимся только к среде браузера, и используется для «доступа и обновлениясодержимое, структура и стиль документов " (W3C) .

Тем не менее, одна из причин, приведенных в этой статье в отношении расширения объектов DOM, по-прежнему относится к расширению собственных типов, таких как Object - а именно вероятность столкновений.


Обтекание объекта относится к созданию нового объекта, который ссылается на оригинал, но предоставляет дополнительные функциональные возможности через новый объект-обертку.

Например, вместо расширения объекта DOM Element с помощью кросс-браузерной функции addClass, например:

var element = document.getElementById('someId');
element.addClass = function (className) {
    ...
};

Вместо этого можно определить функцию-обертку:

var ElementWrapper = function (element) {
    this.element = element;
};

И добавьте функцию к ее прототипу:

ElementWrapper.prototype.addClass = function (className) {
    ...
};

И "оберните" элементы следующим образом:

var element = document.getElementById('someId');
var wrapped = new ElementWrapper(element);
wrapped.addClass('someClass');
...