Может ли функция обратного вызова, принадлежащая прототипу объекта 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()});
}
Другие вопросы по тегам