我想在回调函数中引用“this”,但不能保证“this”会引用正确的对象。创建一个引用“this”的局部变量并在匿名函数中使用该变量是否合适?
例子:
var MyClass = function (property) {
this.property = property;
someAsynchronousFunction(property, function (result) {
this.otherProperty = result; // 'this' could be wrong
});
};
问题是,异步函数可能会从任意上下文调用提供的回调(这通常不在我的控制范围内,例如在使用库时)。
我提出的解决方案是:
var MyClass = function (property) {
this.property = property;
var myClass = this;
someAsynchronousFunction(property, function (result) {
myClass.otherProperty = result; // references the right 'this'
});
};
但我想看看是否有其他策略,或者这个解决方案是否有任何问题。