我试图了解this
关键字在JS中的工作原理,尤其是this
关键字在类中使用时的确切表示,但不在任何嵌套函数中。当我将第一段代码修改为第二段代码时,请帮助我理解为什么会出现错误。
console.log(this);
constructor () {
console.log(this);
}
}
var tiger = new Animal();
这将在控制台中输出:Window {} and Animal {}
。
console.log(this);
class Animal {
var that = this; // addition
constructor () {
console.log(this);
}
}
var tiger = new Animal();
console.log(tiger.that) // addition
这将在控制台中输出Uncaught SyntaxError: Unexpected identifier
。我相信这个错误的原因是var that = this;
行,但我不明白为什么,我假设,变量that
将等于Window {} or Animal {}
。
答案 0 :(得分:0)
您尝试的是无效的语法。请查看the MDN docs以供参考。
答案 1 :(得分:-1)
您需要将var that = this;
移至constructor()
。您不能在方法之外声明class
个特定属性。
console.log(this);
class Animal {
constructor () {
var that = this; // addition
console.log(this);
}
}
var tiger = new Animal();
console.log(tiger.that) // addition
答案 2 :(得分:-2)
在第二个示例中,that
是class Animal
范围内的局部变量。使用var
关键字声明变量时,它仅在当前范围内声明。它在该类之外的任何代码中都是未定义的。
有关详细信息,请查看Variable Scope in Javascript上的MSDN文章。