javascript - Element.prototype.remove - 关闭编译器警告

标签 javascript google-closure-compiler

我正在使用这个解决方案:(来自:Remove element by id)

Element.prototype.remove = function() {
    this.parentElement.removeChild(this);
}
NodeList.prototype.remove = HTMLCollection.prototype.remove = function() {
    for(var i = 0, len = this.length; i < len; i++) {
        if(this[i] && this[i].parentElement) {
            this[i].parentElement.removeChild(this[i]);
        }
    }
}

我在闭包编译器中收到以下警告:

externs.zip//w3c_dom2.js:793:警告 - 删除属性类型与其从父类(super class) Element 覆盖的属性类型不匹配 原始:函数(this:元素):未定义 覆盖:函数(this:HTMLSelectElement,数字):未定义 HTMLSelectElement.prototype.remove = function(index) {};

如何清除此警告?或者我应该对 element.remove 使用另一种方法?

最佳答案

编译器警告您,继承自 Element 的类已具有名为 remove 的方法,并且其签名与您的签名不匹配。在这种情况下,HTMLSelectElement .

如果您忽略该警告,您的删除方法将无法对 HTMLSelectElement 元素正确运行 - 因为该函数执行的行为与您定义的行为非常不同。

@php_nub_qq 的评论是正确的。选择一个不与继承链中现有对象冲突的方法名称。

关于javascript - Element.prototype.remove - 关闭编译器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29769673/

相关文章:

javascript - 有没有办法将js数组中的元素连接起来,但让最后一个分隔符不同?

javascript - 如何在<pre>标签的每一行末尾添加<br/>?

visual-studio-2010 - 如何将 Google Closure Compiler 集成为 Visual Studio 2010 中的构建步骤

google-closure-compiler - Closure Compiler Externs - 警告 - 从未定义过的属性

javascript - Google Closure 编译器中的 JSC_TYPE_MISMATCH 警告

javascript - ":optimizations :advanced"的全局变量/函数过多

javascript - 哪种写内容人口的方式更好?

javascript - Ajax 登录未按预期使用react

javascript - 使用 Google Closure Compiler Application 在一个文件中压缩所有文件 .js

javascript - 使用 Javascript 检查多维数组的长度