Maison > Questions et réponses > le corps du texte
Dans le livre JavaScript Ninja Secrets, il y a un exemple de bibliothèque de prototypes et de code de liaison de fonction :
Function.prototype.bind = function(){
var fn = this, args = Array.prototype.slice.call(arguments),
object = args.shift();
return function(){
return fn.apply(object,args.concat(Array.prototype.slice.call(arguments)));
};
};
var myObject = {a:"1"};
function myFunction(){
return this == myObject;
};
var aFunction = myFunction.bind(myObject);
aFunction();
J'utilise des points d'arrêt pour vérifier la fonctionbind
里面的fn指向myFunction
这个函数 这个我不太理解 我的理解是只要用Function.prototype
这个原型扩展的方法 此方法里面开始声明的变量var fn=this;
中fn
的指向就指向使用这个方法的函数 就像本例中的myFunction.bind(myObject);
调用bin
方法,fn
指向myFunction
Cette fonction, je ne sais pas si c'est la bonne façon de la comprendre
迷茫2017-05-19 10:38:17
En fait, je ne comprends pas très bien votre question, alors parcourons le code avec des idées
myFunction.bind(myObject) entre dans la fonction de liaison du prototype
Attribuez myFunction à fn, convertissez les paramètres en tableau args, supprimez le premier paramètre et attribuez-le à l'objet.
Renvoyer une fonction, puis penser aux fermetures, et alors vous comprendrez. Le travail effectué par cette fonction peut être simplement compris comme myFunction.apply(myObject,[... voici d'autres paramètres])
uneFonction()
C'est maFonction.apply(monObjet,[...il n'y a pas de paramètres ici])
Ensuite, entrez l'intérieur de maFonction, en raison de la relation entre appliquer, c'est monObjet, puis le travail est monObjet==monObjet
Retour vrai