原型中的getAttribute但未定义抛出

时间:2014-10-30 09:47:29

标签: javascript jquery dom

我在浏览器中遇到一个非常奇怪的问题:我有一个HTMLElement elt是图片,但elt.getAttribute未定义,尽管elt.__proto__包含{{1}方法。

我查了很多东西:

getAttribute

知道这可能来自哪里?我不知道它来自何处。

1 个答案:

答案 0 :(得分:1)

我尝试了最简单的方案:

<img name="elt" src="...">


<script>

    var elt = document.images.namedItem("elt");

    alert(elt.getAttribute);     // function getAttribute() { [native code] }   
    alert(elt.getAttribute == elt.__proto__.getAttribute);     // true

</script>

我得到的预期意味着原型链的工作原理。 我的建议是检查输出:

elt.getAttribute == elt.__proto__.getAttribute

如果它们与你的情况不一样,那么你做了一些打破原型链的事情。 我可以按如下方式模拟你的场景:

<img name="elt" src="...">


<script>

    var elt = document.images.namedItem("elt");

    alert(elt.getAttribute);     // function getAttribute() { [native code] }   
    alert(elt.getAttribute == elt.__proto__.getAttribute);     // true

    elt.getAttribute = undefined;

    alert(elt.getAttribute == elt.__proto__.getAttribute);     // false

</script>

因此我认为elt.getAttribute已在代码中的某处定义并设置为“未定义”。