Maison > interface Web > js tutoriel > Partager une nouvelle compréhension de ce pointeur dans les compétences JavaScript_javascript

Partager une nouvelle compréhension de ce pointeur dans les compétences JavaScript_javascript

WBOY
Libérer: 2016-05-16 16:16:37
original
1055 Les gens l'ont consulté

La compréhension de cela a toujours été qu'elle peut être utilisée et peut être utilisée, mais elle n'a pas approfondi son essence. Cette fois, j'ai acquis une compréhension approfondie grâce à "JavaScript The Good Parts". (Tous les débogages sont visibles dans la console, touche F12 du navigateur)

Regardons cela ensemble.

Lorsque nous déclarons une fonction, en plus des paramètres (paramètres formels) lorsqu'elle est définie, chaque fonction aura également deux paramètres supplémentaires, l'un est ceci et l'autre est des arguments (paramètres réels). les arguments sont les paramètres réellement reçus par la fonction, qui sont un tableau de type tableau. Je donnerai seulement une brève introduction aux arguments, en me concentrant sur ce pointeur.

En programmation orientée objet, ceci est très important, et sa valeur dépend du mode d'appel. En JavaScript, il existe un total de 4 modes d'appel : le mode d'appel de méthode, le mode d'appel de fonction, le mode d'appel de constructeur et le mode d'appel d'application.

Mode d'appel de méthode

Lorsqu'une fonction est utilisée comme propriété d'un objet, nous appelons généralement la fonction une méthode de l'objet. Lorsque cette méthode est appelée, cela pointe vers l’objet auquel appartient la méthode.

Copier le code Le code est le suivant :


Comme le montre la châtaigne, cela pointe vers l'objet sayName. Cette méthode d'obtention du contexte de l'objet via ceci est une méthode publique. (méthode publique)

Mode d'appel de fonction

Lorsqu'une fonction est appelée mais n'est pas une méthode sur un objet, alors elle est appelée en tant que fonction.

Lorsqu'elle est appelée dans ce mode, this pointera vers l'objet window, même si cette fonction peut être appelée dans une fonction externe, regardons un exemple.

Copier le code Le code est le suivant :


En regardant les choses de cette façon, vous savez probablement comment résoudre "l'erreur de conception" de JavaScript.

Oui, mettez simplement ceci en cache dans la fonction étudiant, qui est la ligne 6. Transférez ensuite cela à la fonction sayName via une variable et vous pourrez le résoudre !

Copier le code Le code est le suivant :

var personnes = {
         nom : "les gens-Yika",
étudiant : fonction(){
              var self = this //Cache ceci
              fonction sayName(){
              var name = "sayName-Yika";
                        console.log(self.name); //"people-Yika", self à ce moment-là pointe vers l'objet people
            };
                sayName();
>
>

Mode d'appel du constructeur

Quand on parle de constructeurs en JavaScript, vous penserez : "Mettez le nom de la fonction en majuscule ! Utilisez l'opérateur new lors de l'appel !" La mise en majuscule du nom de la fonction est facile à comprendre, et c'est pour standardiser et unifier la dénomination des constructeurs. Mais avez-vous déjà réfléchi aux raisons pour lesquelles vous devez utiliser du nouveau ? Si vous appelez une fonction avec new devant, l'arrière-plan de la fonction créera un nouvel objet pointant vers le prototype de la fonction, et celui-ci sera également lié au nouvel objet. JavaScript est un langage basé sur l'héritage de prototypes. Les étudiants qui ne connaissent pas très bien le prototype peuvent vérifier les informations par eux-mêmes.

Voyons d’abord à quoi ressemble généralement un constructeur.

Copier le code Le code est le suivant :



À première vue, cela ne semble pas facile à comprendre. Pourquoi cela dans la fonction pointait-il vers la fenêtre tout à l'heure, mais maintenant il peut pointer vers la fonction Personnes sans mise en cache ?

Cela n'a pas d'importance. Ne viens-je pas de dire que lorsqu'une fonction est appelée via new, elle fera de « mauvaises choses » en coulisses ?

Copier le code Le code est le suivant :



Vous comprendrez clairement si vous le regardez de cette façon. New générera non seulement un objet, mais renverra également automatiquement cet objet, donc naturellement cela pointera vers ce nouvel objet.

Assurez-vous d'utiliser new pour appeler le constructeur, sinon il n'y aura aucun avertissement en cas de problème. Toutes les majuscules sont toujours très nécessaires.

Appliquer le mode d'appel

La méthode apply nous permet de construire un tableau de paramètres à transmettre à la fonction appelante, et nous permet également de modifier cette valeur.

function.apply (cette valeur liée, tableau de paramètres d'arguments)

Il y a trop de choses à dire sur la candidature, je vais seulement vous donner quelques exemples pour vous aider à comprendre :


Copier le code Le code est le suivant :


Nous pouvons facilement modifier cet objet de liaison de la fonction via apply. La méthode d'appel, qui est similaire à apply, a également le même effet. Les étudiants intéressés peuvent le rechercher et l'apprendre par eux-mêmes.

D'accord, nous avons enfin fini de parler des quatre modes d'appel pour changer cela. Le mode d'appel de méthode et le mode d'appel de constructeur seront davantage utilisés et sont plus importants. Quant au mode d'appel de fonction, nous devons apprendre à les éviter. .

S'il y a des erreurs, veuillez les signaler à temps et je les corrigerai dès que possible pour éviter d'induire les autres en erreur. Merci !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal