gpt4 book ai didi

javascript - 对象的引用与对象不一样?

转载 作者:行者123 更新时间:2023-12-02 15:52:56 26 4
gpt4 key购买 nike

为什么这有效:

var i = document.createElement("input");
document.body.appendChid(i);

但不是这个:

var i = document.createElement("input");
var f = document.body.appendChild;
console.log(f === document.body.appendChild); //outputs true
f(i);

错误详细信息是:

TypeError: 'appendChild' called on an object that does not implement interface Node.

最佳答案

在 JavaScript 中,看起来像“方法”的东西实际上并不“知道”它附加到哪个对象;本质上,它只是一个恰好被保存为某个对象的属性的函数。当您调用它时,就会确定 this 将代表什么对象,在大多数情况下,基于调用中 . 左侧的对象。

所以你的变量f指向正确的函数,但是当它被调用时,它会看到错误的this值。由于在本例中它期望在 DOM 节点上调用(在工作测试中,document.body),因此在该范围之外调用它会引发所示的错误。

请注意,上面的内容都稍微简化了,只有足够的细节来解释您的示例。您可能可以通过搜索 this 以及 callapply 的解释来找到更多阅读内容,这些是显式设置 this 函数调用的绑定(bind)。

关于javascript - 对象的引用与对象不一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31756412/

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