Existe-t-il un moyen de passer le contexte dans un rappel javascript facebook sdk api? Voici un exemple simple. Maintenant cela ne fonctionnera pas parce que la variable 'this.name' dans ma fonction de callback serait indéfinie, parce que ce n'est pas dans mon contexte d'objet utilisateur. Une idée de comment le faire?Contexte sur le rappel de l'api sur facebook?
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' peut être utilisé ici, mais pas de la façon dont vous expliquez. Il passe un rappel à une autre fonction, en tant que fonction. Si vous avez passé 'callback.apply (this)' à la place, vous passeriez le résultat de l'invocation, pas la fonction elle-même. –
Je recommande fortement de ne pas utiliser 'object' comme nom de variable, étant donné que' Object' est un code JavaScript intégré. Bien que ce ne soit pas techniquement faux, c'est assez déroutant. En outre, cela est sémantiquement faux. 'apply' est une méthode de' fonctions', pas d'objets généraux. –
tks c'est la bonne solution. J'utilise la méthode _.bind() du framework underscore.js qui fait exactement ce que fait votre code. – plehoux