class Foo {
constructor() {
this.func = null;
}
a() {
let self = this;
this.func = function() {
console.log(self);
console.log(this);
}
let testFunc = function() {
console.log('in test func')
console.log(this);
}
testFunc();
}
b() {
console.log('in b')
this.func();
}
}
let x = new Foo();
x.a();
x.b();
我希望对xb()的调用可以打印针对该类的'this'对象(对console.log(self)的调用),然后为第二个控制台调用(console.log(this)打印未定义的对象;),因为此上下文中的“ this”位于新的匿名函数中。但是当我运行它时,它会打印相同的“ this”对象。通过调用testFunc()可以看到我期望的确切行为(打印未定义),该调用在前面提到的代码正下方定义。我假定在类方法中定义的匿名函数的行为相同,但显然它们却不相同。任何人都应该对这种行为的行为方式/原因有所了解。谢谢。