En Javascript, comment puis-je lier des arguments à une fonction sans lier le thisparamètre?
Par exemple:
//Example function.
var c = function(a, b, c, callback) {};
//Bind values 1, 2, and 3 to a, b, and c, leave callback unbound.
var b = c.bind(null, 1, 2, 3); //How can I do this without binding scope?
Comment puis-je éviter l'effet secondaire d'avoir à lier également la portée de la fonction (par exemple, setting this= null)?
Éditer:
Désolé pour la confusion. Je veux lier des arguments, puis pouvoir appeler la fonction liée plus tard et la faire se comporter exactement comme si j'appelais la fonction d'origine et lui passais les arguments liés:
var x = 'outside object';
var obj = {
x: 'inside object',
c: function(a, b, c, callback) {
console.log(this.x);
}
};
var b = obj.c.bind(null, 1, 2, 3);
//These should both have exact same output.
obj.c(1, 2, 3, function(){});
b(function(){});
//The following works, but I was hoping there was a better way:
var b = obj.c.bind(obj, 1, 2, 3); //Anyway to make it work without typing obj twice?
Je suis encore nouveau dans ce domaine, désolé pour la confusion.
Merci!
bind()être null? Semble bien fonctionner dans FF.
thiscomplètement dissocié en JavaScript. Cela signifie toujours quelque chose . La liaison thisà la thisfonction englobante a donc beaucoup de sens.
this?var b = c.bind(this, 1,2,3);