gpt4 book ai didi

Javascript 嵌套函数丢失作用域

转载 作者:搜寻专家 更新时间:2023-11-01 05:23:59 31 4
gpt4 key购买 nike

谁能解释一下下面代码的作用域绑定(bind)

window.name = "window";

object = {
name: "object",
method: function() {
nestedMethod: function() {
console.log(this.name);
}
nestedMethod();
}
}

object.method(); // print 'window'

我想我的问题更多是关于 this...为什么 this 失去作用域并默认为全局作用域?我们创建的所有匿名函数都将在全局范围内运行吗?

最佳答案

当你调用一个函数时,只要简单地写func(),函数内部的this就会指向全局对象。在你的情况下你写:

nestedMethod();

因此 nestedMethod 中的 this 是窗口对象。您可以使用 call(或 apply)为您的函数调用手动定义上下文:

nestedMethod.call(this);

关于Javascript 嵌套函数丢失作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17558635/

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