gpt4 book ai didi

javascript - 为什么this在一个JS类方法中定义调用的函数中是未定义的。我希望这是窗口

转载 作者:行者123 更新时间:2023-11-29 10:56:10 25 4
gpt4 key购买 nike

我以为我了解 JS 中的机制,但是 -> 我无法解释为什么如果你在一个JS类(语法类)的方法中定义和调用一个函数,当我期望它是窗口时,这个函数中 'this' 的这个值是未定义的。

没有包含在代码片段中,但我尝试检查该方法的上下文是否在严格模式下执行,但事实并非如此。

我在 js fiddle 和我的 chrome 浏览器控制台上尝试了代码。

class ComponentClass {
classMethod() {
function funcInMethod() {
console.log('this in in the function funcInMethod defined and called from the method class: ', this);
}
funcInMethod();
}
}

var classInstance = new ComponentClass();
classInstance.classMethod();

// logged: > undefined
// expected: > window

最佳答案

1)function(){} 声明定义了它自己对上下文的“this”引用。在“严格模式”下,这种上下文默认是未定义的,在非严格模式下,它将是“窗口”

2) 按标准在严格模式下评估的类声明 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Strict_mode

关于javascript - 为什么this在一个JS类方法中定义调用的函数中是未定义的。我希望这是窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56786996/

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