什么是DOM扩展/包装?

什么是DOM扩展/包装?,dom,mootools,javascript,prototypejs,Dom,Mootools,Javascript,Prototypejs,我有两个主要问题 像ObjectObject这样的扩展有用吗 什么是DOM包装 在阅读了那篇文章之后,我找不到任何关于DOM包装的内容,也找不到任何规范以及什么是DOM扩展和什么不是DOM扩展。不,对象被指定为Javascript语言的一部分,而DOM是一种仅与浏览器环境相关的API,用于“访问和更新文档的内容、结构和样式” 然而,那篇文章中提出的反对DOM对象扩展的理由之一仍然适用于扩展本机类型,例如Object——即冲突的可能性 包装对象是指创建引用原始对象的新对象,但通过新的包装对象提

我有两个主要问题

  • Object
    Object这样的扩展有用吗

  • 什么是DOM包装


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

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

    然而,那篇文章中提出的反对DOM对象扩展的理由之一仍然适用于扩展本机类型,例如
    Object
    ——即冲突的可能性


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

    例如,与使用跨浏览器
    addClass
    函数扩展DOM元素对象不同,如下所示:

    var element = document.getElementById('someId');
    element.addClass = function (className) {
        ...
    };
    
    var element = document.getElementById('someId');
    var wrapped = new ElementWrapper(element);
    wrapped.addClass('someClass');
    
    您可以改为定义包装函数:

    var ElementWrapper = function (element) {
        this.element = element;
    };
    
    并将该功能添加到其原型中:

    ElementWrapper.prototype.addClass = function (className) {
        ...
    };
    
    和“包裹”元素,如下所示:

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