gpt4 book ai didi

javascript - 在 Javascript 中用 this 理解内部函数

转载 作者:行者123 更新时间:2023-11-30 07:00:26 27 4
gpt4 key购买 nike

我最近开始学习 Javascript,同时对卡在这段代码中的代码进行了一些实验:

var k = {
ab: "hi",
func: function() {
console.log("inner1" + this.ab);
(function() {
console.log("inner2 " + this.ab)
}())
}
};
k.func();

此代码给出结果“inner1 hi”和“inner2 undefined”。

我不明白为什么它的 undefined 在第二个 console.log 中?

最佳答案

一个函数的this是在你调用它的时候绑定(bind)的,这取决于你如何调用它。将其作为值而不是属性调用 - (expression)() 而不是 object.method() - 将导致 this 被设置到全局对象,或者在严格模式下为 undefined

函数对象上有两种方法可以使用显式指定的 this 调用函数:callapply .您可以在此处使用前者。

(function() {
console.log("inner2 " + this.ab);
}<b>.call(this)</b>);

这会将调用函数的 this 转发给内部函数。

或者,您可以将 this 分配给一个变量。

<b>var that = this;</b>

(function() {
console.log("inner2 " + <b>that</b>.ab);
}());

关于javascript - 在 Javascript 中用 this 理解内部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31669243/

27 4 0
文章推荐: javascript - 将