gpt4 book ai didi

javascript - 函数中的 'this' VS 方法中的 'this'

转载 作者:行者123 更新时间:2023-12-03 16:46:50 24 4
gpt4 key购买 nike

来自 Javascript-Garden:

Foo.method = function() {
function test() {
//this is set to the global object
}
test();
}

为了在测试中访问 Foo,有必要在方法内部创建一个引用 Foo 的局部变量:

Foo.method = function() {
var that = this;
function test(){
//Use that instead of this here
}
test();
}

谁能解释一下?据我了解,this 如果在全局范围内调用,则指的是全局对象。但是这里它是在函数内部调用的,它在方法内部(第一个示例)。为什么它确实引用了全局对象,而第二个示例却没有?

最佳答案

As far as I understood, this refers to the global object if it's called in the global scope.

没有。如果在没有显式上下文的情况下调用函数,this 将引用默认对象。范围无关紧要。 (在严格模式下,它将引用 undefined)。

Why exactly does it refer to the global object

我们不知道它指的是什么。 this 的值取决于函数是如何调用的,而不是它是如何调用的已定义。

现在您已经更新了示例,我们可以看到它是在没有上下文的情况下调用的,因此 this (在内部函数中)将是默认对象,在网络浏览器中是 window (在严格模式下它将是 undefined)。

while the second example doesn't?

在第二个示例中,内部函数不使用 this(它将与上一个示例具有相同的值)。

第二个示例使用 that 代替。 that 在外部函数的范围内定义,并设置为调用该函数时 this 的任何值。

假设该函数被调用为 Foo.method() 那么(外部)this(因此 that)将是 Foo 因为那是调用 method 的上下文。

关于javascript - 函数中的 'this' VS 方法中的 'this',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15783203/

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