Foo.prototype.update = function()
{
var self = this;
FB.api('/me/likes', function (response){
self.bar["likes"] = response;
});
}
Если вы кешируете this
как локальную переменную, вы можете ссылаться на нее внутри функции обратного вызова.
В качестве альтернативы вы можете использовать команду связывания ES5 или альтернативу jQuery $.proxy
.или альтернатива подчеркивания _.bind
FB.api('/me/likes', (function (response){
this.bar["likes"] = response;
}).bind(this));
FB.api('/me/likes', $.proxy(function (response){
this.bar["likes"] = response;
}, this));
FB.api('/me/likes', _.bind(function (response){
this.bar["likes"] = response;
}, this));
Все это гарантирует, что значение this
в вашей функции соответствует ожидаемому.(обратите внимание, что .bind
- это ES5 и ломается в старых браузерах).
Если у вас лежит jQuery, вы можете использовать $ .proxy.Если вы не хотите включать jQuery, используйте вместо этого подчеркивание, потому что оно намного меньше