<分区>
我有一个 JavaScript 类 (MyClass),它公开了两个公共(public)函数(funA 和 funB),如下所示:
var MyClass = function(){
this.funA = function(){
console.log("function A");
this.funB();
};
this.funB = function(){
console.log("function B");
};
};
var myObj = new MyClass();
请注意 funA 如何使用“this”关键字调用 funB。
以下作品:
myObj.funA();
但这不是:
var anonymousFun = function(fn){
fn();
}
anonymousFun(myObj.funA);
原因是当 funA 使用“this”调用 funB 时,“this”被设置为全局上下文(而不是 MyClass)并且 funB 在全局级别不存在。 错误是:
Uncaught TypeError: this.funB is not a function
我试图避免该问题的最简单解决方案是在 MyClass 中使用变量“that”并将其初始化为“this”。然后,在 funA 中使用 that.funB 而不是 this.funB:
var MyClass = function(){
var that = this;
this.funA = function(){
console.log("function A");
that.funB();
};
this.funB = function(){
console.log("function B");
};
};
这是正确的方法吗? 有没有更好的解决方案?