Может ли функция обратного вызова, принадлежащая прототипу объекта JavaScript, получить доступ к членам объекта? - PullRequest
2 голосов
/ 14 июня 2011

Как функция обратного вызова, принадлежащая прототипу объекта 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 ]

5 голосов
/ 14 июня 2011

database.get("someKey",this.cb.bind(this));

.bind, ES5 шим для старых браузеров

2 голосов
/ 14 июня 2011

В javascript this всегда указывает на объект, для которого вызывается функция, или глобальный объект, если он не вызывается ни для чего. Вы можете сделать это таким образом?

Obji.prototype.func = function(){
   var ref = this;
   database.get("someKey", function(){ref.cb()});
}
...