DOM扩展/包装究竟是什么?

时间:2011-03-15 22:27:59

标签: dom mootools javascript prototypejs

我有两个主要问题。

  1. 是否会延长Object等内容?

  2. 什么是DOM包装?

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

    阅读那篇文章之后,我找不到任何关于DOM包装的内容,也没有找到任何规范以及究竟是什么和不是DOM扩展。

1 个答案:

答案 0 :(得分:8)

不,Object被指定为Javascript 语言的一部分,而DOM是 API 仅在浏览器环境中相关,并且用于“访问和更新文档的内容,结构和样式“(W3C)

但是,该文章中提出的反对DOM对象扩展的原因之一仍然适用于扩展本地类型,例如Object - 即碰撞的可能性。


包装对象是指创建一个引用原始对象的 new 对象,但通过新的包装器对象提供其他功能。

例如,不是像这样使用跨浏览器addClass函数扩展DOM Element对象:

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');