作者:谁的围脖搞笑排行榜 | 来源:互联网 | 2023-09-07 20:01
有没有办法在javascriptfacebooksdkapi回调中传递上下文?这是一个简单的例子.现在这将不起作用,因为我的回调函数中的变量“this.name”将是未定义的,因为
有没有办法在Javascript facebook sdk api回调中传递上下文?这是一个简单的例子.现在这将不起作用,因为我的回调函数中的变量“ this.name”将是未定义的,因为它不在我的用户对象上下文中.知道怎么做吗?
function user(id) {
this.id = id;
this.getUserName = function(fields,callback){
FB.api({
method:'fql.query',
query: 'SELECT '+ fields.toString() +' FROM profile WHERE id=' + this.id
},
callback
);
}
this.getUserName(['name'],function(response){this.name = response[0].name;});
}
var amigo = new user('fb_id_here');
解决方法:
编辑:这只是解决方案的一部分. Apply()可以与闭包一起使用,以返回绑定到对象范围的函数(请参见Jamie的文章).
例如:
function bindScope = function(context, obj)
{
return function()
{
return obj.apply(context);
}
}
我相信您可以使用Javascript的apply()更改上下文.尝试将第8行更改为callback.apply(this).
上下文资源申请-http://kossovsky.net/index.php/2009/07/function-context-and-apply-function/