Может ли функция обратного вызова, принадлежащая прототипу объекта JavaScript, получить доступ к членам объекта?
Как функция обратного вызова, принадлежащая прототипу объекта JavaScript, может получить доступ к членам объекта? обратный вызов не может быть закрытием, все должно быть определено следующим образом:
function Obji(param){
this.element = param;
}
Obji.prototype.func(){
database.get("someKey",this.cb);
}
Obji.prototype.cb(){
//here I would like to access this.element
}
2 ответа
Решение
database.get("someKey",this.cb.bind(this));
.bind
, ES5 шим для старых браузеров
В JavaScript this
всегда указывает на объект, для которого вызывается функция, или глобальный объект, если он не вызывается ни для чего. Вы можете сделать это таким образом?
Obji.prototype.func = function(){
var ref = this;
database.get("someKey", function(){ref.cb()});
}