【问题标题】:What exactly is DOM Extension / Wrapping?究竟什么是 DOM 扩展/包装?
【发布时间】:2011-03-15 22:27:59
【问题描述】:

我有两个主要问题。

  1. 扩展像Object 这样的东西算吗?

  2. 什么是 DOM 包装?

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

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

【问题讨论】:

    标签: dom mootools javascript prototypejs


    【解决方案1】:

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

    但是,该文章中提供的反对扩展 DOM 对象的原因之一仍然适用于扩展原生类型,例如 Object - 即冲突的可能性。


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

    例如,而不是像这样使用跨浏览器 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');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-15
      • 2021-11-06
      • 1970-01-01
      • 2017-04-25
      • 2014-10-28
      • 2012-08-27
      • 2010-11-12
      • 2011-03-18
      相关资源
      最近更新 更多