javascript - ce problème de pointage dans la méthode du prototype d'extension js
漂亮男人
漂亮男人 2017-05-19 10:36:17
0
1
699

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指向myFunctionCette fonction, je ne sais pas si c'est la bonne façon de la comprendre

漂亮男人
漂亮男人

répondre à tous(1)
迷茫

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

  1. Attribuez myFunction à fn, convertissez les paramètres en tableau args, supprimez le premier paramètre et attribuez-le à l'objet.

  2. 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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!