我有两个主要问题。
是否会延长Object
等内容?
什么是DOM包装?
http://perfectionkills.com/whats-wrong-with-extending-the-dom/
阅读那篇文章之后,我找不到任何关于DOM包装的内容,也没有找到任何规范以及究竟是什么和不是DOM扩展。
答案 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');