gpt4 book ai didi

javascript - 原型(prototype)中的 getAttribute 但抛出 undefined

转载 作者:行者123 更新时间:2023-12-03 11:33:17 26 4
gpt4 key购买 nike

我在浏览器中面临一个非常奇怪的问题:我有一个 HTMLElement elt ,它是一个图像,但 elt.getAttribute 未定义,尽管 elt .__proto__ 包含一个 getAttribute 方法。

我检查了很多东西:

elt.nodeType             => 1
elt.__proto__ => HTMLImageElement {click: function, getAttribute: function, setAttribute: function, removeAttribute: function, getAttributeNode: function…}
elt.__proto__.getAttribute => function getAttribute() { [native code] }
elt.getAttribute => undefined
elt.setAttribute => function setAttribute() { [native code] }
elt.getAttributeNS => function getAttributeNS() { [native code] }
elt.getAttributeNode => function getAttributeNode() { [native code] }
elt.getAttributeNodeNS => function getAttributeNodeNS() { [native code] }
typeof elt => object

知道这可能来自哪里吗?我不知道这是从哪里来的。

最佳答案

我尝试了最简单的可能场景:

<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>

我得到了预期的结果,这意味着原型(prototype)链可以工作。我的建议是检查以下输出:

elt.getAttribute == elt.__proto__.getAttribute

如果它们不像你的情况那样相等,那么你做了一些破坏原型(prototype)链的事情。我可以模拟您的场景如下:

<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 已在代码中的某处定义并设置为“未定义”。

关于javascript - 原型(prototype)中的 getAttribute 但抛出 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26649679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com