我在浏览器中遇到一个非常奇怪的问题:我有一个HTMLElement elt
是图片,但elt.getAttribute
未定义,尽管elt.__proto__
包含{{1}方法。
我查了很多东西:
getAttribute
知道这可能来自哪里?我不知道它来自何处。
答案 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已在代码中的某处定义并设置为“未定义”。