通常在JavaScript“对象”中的方法中,“this”指代当前对象。
但是当作为回调函数使用时,它变成了对调用对象的引用。
我发现这会导致代码中出现问题,因为如果您将JavaScript“对象”中的方法用作回调函数,您无法确定“this”是指当前“对象”还是指调用对象。
是否有人能够阐明如何避免这个问题的使用和最佳实践?
function TestObject() {
TestObject.prototype.firstMethod = function(){
this.callback();
YAHOO.util.Connect.asyncRequest(method, uri, callBack);
}
TestObject.prototype.callBack = function(o){
// do something with "this"
//when method is called directly, "this" resolves to the current object
//when invoked by the asyncRequest callback, "this" is not the current object
//what design patterns can make this consistent?
this.secondMethod();
}
TestObject.prototype.secondMethod = function() {
alert('test');
}
}