将从匿名函数接收到的数据保存在类对象中
我正在尝试将从 Facebook API 调用收到的数据存储到类属性中。
我的构造函数:
function Foo() {
this.bar = {
likes: 0
};
}
更新对象的方法:
Foo.prototype.update = function() {
FB.api('/me/likes', function (response) {
// this.bar['likes'] is out of the scope
});
}
var foo = new Foo();
foo.update();
这可能吗,还是我应该尝试进行同步调用? 我不确定 Facebook 的 API 是否支持它。
谢谢
I am trying to store the data I receive from a Facebook API call into a class property.
My constructor:
function Foo() {
this.bar = {
likes: 0
};
}
Method to update the object:
Foo.prototype.update = function() {
FB.api('/me/likes', function (response) {
// this.bar['likes'] is out of the scope
});
}
var foo = new Foo();
foo.update();
Is this possible or should I just try to make a synchronous call instead?
I'm not sure if Facebook's API supports it.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您将
this
缓存为局部变量,那么您可以在回调函数中引用它。或者,您可以使用 ES5 绑定命令或 jQuery 替代方法
$.proxy
。或下划线替代_.bind
所有这些都将确保函数中的
this
值正是您所期望的。 (请注意,.bind
是 ES5,在旧浏览器中会中断)。如果你有 jQuery,你可以使用 $.proxy。如果您不想包含 jQuery,请包含下划线,因为它要小得多
If you cache
this
as a local variable then you can reference it inside your callback function.Alternatively you can use the ES5 bind command or the jQuery alternative
$.proxy
. or the underscore alternative_.bind
All of these will make sure that the
this
value in your function is what you expect it to be. (note that.bind
is ES5 and breaks in old browsers).If you have jQuery lying around you can use $.proxy. If you don't want to include jQuery, include underscore instead because it's a lot smaller