В JavaScript оператор "this" может ссылаться на разные вещи в разных сценариях.
Обычно в методе внутри JavaScript-объекта он ссылается на текущий объект.
Но при использовании в качестве обратного вызова он становится ссылкой на вызывающий объект.
Я обнаружил, что это вызывает проблемы в коде, потому что, если вы используете метод в JavaScript-объекте как функцию обратного вызова, вы не можете определить, относится ли "this" к текущему "объекту" или "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');
}
}