Maison > interface Web > js tutoriel > Pourquoi JavaScript bind() est-il requis pour conserver la valeur « cette » dans les rappels asynchrones et les arguments de fonction ?

Pourquoi JavaScript bind() est-il requis pour conserver la valeur « cette » dans les rappels asynchrones et les arguments de fonction ?

DDD
Libérer: 2024-10-25 04:31:29
original
447 Les gens l'ont consulté

Why is JavaScript bind() Required for Preserving 'this' Value in Asynchronous Callbacks and Function Arguments?

Pourquoi JavaScript bind() est-il nécessaire ?

En JavaScript, le mot-clé this fait référence à l'objet qui possède la fonction en cours d'exécution. Cependant, dans les rappels asynchrones ou lors du passage de fonctions comme arguments à d'autres fonctions, la valeur de this peut être perdue.

Le besoin de bind()

Lorsqu'une fonction est appelée comme méthode de un objet (par exemple, object.method()), cela fait correctement référence à l'objet. Cependant, lorsque la fonction est invoquée en tant que fonction autonome (par exemple, method()), la valeur par défaut est l'objet global.

Pour éviter ce problème, bind() vous permet de spécifier manuellement la valeur de ceci lorsque appeler une fonction dans le futur. Il renvoie une nouvelle fonction avec sa valeur this liée à l'objet spécifié.

Solution dans l'exemple 2

Dans l'exemple 2, bind() est utilisé pour créer une nouvelle fonction (storeMyName2) qui a c'est cette référence liée à myName. Cela garantit que lorsque la nouvelle fonction est appelée, elle fera référence à myName, quelle que soit la façon dont elle est appelée.

Comparaison avec l'exemple 3

Dans l'exemple 3, storeMyName3 est défini sur le résultat de appelant directement myName.getName(). Cela signifie que storeMyName3 contient la valeur renvoyée, qui est simplement la chaîne « Tom ». Ce n'est pas une fonction comme storeMyName et storeMyName2, donc cela n'implique pas le concept de ceci.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
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