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

时间:2015-04-21 10:31:37

标签: 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: WARNING - mismatch of the remove property type and the type of the property it overrides from superclass Element original: function (this:Element): undefined override: function (this:HTMLSelectElement, number): undefined HTMLSelectElement.prototype.remove = function(index) {};

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

1 个答案:

答案 0 :(得分:3)

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

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

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