À quoi sert bind()
en JavaScript?
javascript
function
bind
Sandeep Kumar
la source
la source
select = document.querySelector.bind(document)
this
que, autrement, ferait référence àwindow
l'objet global. Avecdocument.querySelector.bind(document)
, nous veillons à ce queselect
l »this
fait référence àdocument
, et nonwindow
. Quelqu'un me corrige si j'ai mal compris cela.Réponses:
Bind crée une nouvelle fonction qui forcera l'
this
intérieur de la fonction à être le paramètre transmisbind()
.Voici un exemple qui montre comment utiliser
bind
pour passer une méthode membre qui a le bonthis
:Qui imprime:
Vous pouvez également ajouter des paramètres supplémentaires après le paramètre 1st (
this
) etbind
transmettre ces valeurs à la fonction d'origine. Tous les paramètres supplémentaires que vous transmettez ultérieurement à la fonction liée seront transmis après les paramètres liés:Qui imprime:
Consultez la fonction JavaScript bind pour plus d'informations et des exemples interactifs.
Mise à jour: ECMAScript 2015 ajoute la prise en charge des
=>
fonctions.=>
les fonctions sont plus compactes et ne modifient pas lethis
pointeur de leur portée de définition, vous n'aurez donc pas besoin de l'utiliserbind()
aussi souvent. Par exemple, si vous vouliez qu'une fonctionButton
du premier exemple connecte leclick
rappel à un événement DOM, les méthodes suivantes sont toutes valides:Ou:
Ou:
la source
var Note = React.createClass({ add: function(text){ ... }, render: function () { return <button onClick={this.add.bind(null, "New Note")}/> } }
alors lorsque le bouton est cliqué, il passera un texte de paramètre "New Note" à laadd
méthode.L'utilisation la plus simple de
bind()
est de créer une fonction qui, quelle que soit la façon dont elle est appelée, est appelée avec unethis
valeur particulière .Veuillez consulter ce lien pour plus d'informations
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
la source
prototype
) qui pourraient être nouvelles pour les débutants.lier permet-
Par exemple, vous avez une fonction pour déduire les frais de club mensuels
Vous souhaitez maintenant réutiliser cette fonction pour un autre membre du club. Notez que les frais mensuels varient d'un membre à l'autre.
Imaginons que Rachel ait un solde de 500 et une cotisation mensuelle de 90.
Maintenant, créez une fonction qui peut être utilisée encore et encore pour déduire les frais de son compte chaque mois
Désormais, la même fonction getMonthlyFee peut être utilisée pour un autre membre avec des frais d'adhésion différents. Par exemple, Ross Geller a un solde de 250 et des frais mensuels de 25
la source
Depuis les documents MDN sur
Function.prototype.bind()
:Alors qu'est-ce que cela signifie?!
Eh bien, prenons une fonction qui ressemble à ceci:
Maintenant, prenons un objet qui ressemble à ceci:
Nous pouvons lier notre fonction à notre objet comme ceci:
Maintenant, nous pouvons exécuter
Obj.log
n'importe où dans notre code:Cela fonctionne, car nous avons lié la valeur de
this
à notre objetObj
.Là où cela devient vraiment intéressant, c'est quand vous liez non seulement une valeur pour
this
, mais aussi pour son argumentprop
:Nous pouvons maintenant le faire:
Contrairement à avec
Obj.log
, nous ne devons pas passerx
ouy
, parce que nous avons passé ces valeurs lorsque nous avons fait notre liaison.la source
Variables a des portées locales et mondiales. Supposons que nous ayons deux variables du même nom. L'un est défini globalement et l'autre est défini à l'intérieur d'une fermeture de fonction et nous voulons obtenir la valeur variable qui se trouve à l'intérieur de la fermeture de fonction. Dans ce cas, nous utilisons cette méthode bind (). Veuillez voir l'exemple simple ci-dessous:
la source
Sommaire:
La
bind()
méthode prend un objet comme premier argument et crée une nouvelle fonction. Lorsque la fonction est invoquée, la valeur dethis
dans le corps de la fonction sera l'objet qui a été passé comme argument dans labind()
fonction.Comment ça
this
marche dans JS quand mêmeLa valeur de
this
en javascript dépend dépend toujours de quel objet la fonction est appelée. La valeur de ceci fait toujours référence à l'objet à gauche du point d'où la fonction est appelée . Dans le cas de la portée mondiale, c'estwindow
(ouglobal
ennodeJS
). Seulementcall
,apply
etbind
peut modifier différemment cette liaison. Voici un exemple pour montrer comment fonctionne ce mot-clé:Comment la liaison est-elle utilisée?
Bind peut aider à surmonter les difficultés avec le
this
mot - clé en ayant un objet fixe auquel ilthis
fera référence. Par exemple:Une fois que la fonction est liée à une
this
valeur particulière , nous pouvons la faire circuler et même la mettre sur les propriétés d'autres objets. La valeur dethis
restera la même.la source
obj
est l'objet parce qu'il est à gauche du point etwindow
l'objet parce qu'il est un raccourci pourwindow.custFunc()
etwindow
est à gauche du point était très perspicace pour moi.Je vais expliquer la liaison théorique et pratique
bind en javascript est une méthode - Function.prototype.bind. bind est une méthode. Il est appelé prototype de fonction. Cette méthode crée une fonction dont le corps est similaire à la fonction sur laquelle elle est appelée mais le 'this' fait référence au premier paramètre passé à la méthode bind. Sa syntaxe est
Exemple:--
la source
La méthode bind () crée une nouvelle instance de fonction dont cette valeur est liée à la valeur passée dans bind (). Par exemple:
Ici, une nouvelle fonction appelée objectSayColor () est créée à partir de sayColor () en appelant bind () et en passant l'objet o. La fonction objectSayColor () a cette valeur équivalente à o, donc l'appel de la fonction, même en tant qu'appel global, entraîne l'affichage de la chaîne «bleu».
Référence: Nicholas C. Zakas - JAVASCRIPT® PROFESSIONNEL POUR LES DÉVELOPPEURS WEB
la source
Création d'une nouvelle fonction en liant des arguments à des valeurs
La
bind
méthode crée une nouvelle fonction à partir d'une autre fonction avec un ou plusieurs arguments liés à des valeurs spécifiques, y compris l'this
argument implicite .Application partielle
Ceci est un exemple de application partielle . Normalement, nous fournissons une fonction avec tous ses arguments qui donne une valeur. C'est ce qu'on appelle l'application de fonction. Nous appliquons la fonction à ses arguments.
Une fonction d'ordre supérieur (HOF)
L'application partielle est un exemple de fonction d'ordre supérieur (HOF) car elle donne une nouvelle fonction avec moins d'arguments.
Liaison de plusieurs arguments
Vous pouvez utiliser
bind
pour transformer des fonctions avec plusieurs arguments en nouvelles fonctions.Conversion de la méthode d'instance en fonction statique
Dans le cas d'utilisation le plus courant, lorsqu'elle est appelée avec un seul argument, la
bind
méthode crée une nouvelle fonction dont lathis
valeur est liée à une valeur spécifique. En effet, cela transforme une méthode d'instance en une méthode statique.Implémentation d'un rappel avec état
L'exemple suivant montre comment l'utilisation de la liaison de
this
peut permettre à une méthode objet d'agir comme un rappel qui peut facilement mettre à jour l'état d'un objet.la source
Comme mentionné,
Function.bind()
vous permet de spécifier le contexte dans lequel la fonction s'exécutera (c'est-à-dire, vous permet de passer dans quel objet lethis
mot clé se résoudra dans le corps de la fonction.Un couple de méthodes API de boîte à outils analogues qui effectuent un service similaire:
jQuery.proxy ()
Dojo.hitch ()
la source
la source
Considérez le programme simple ci-dessous,
la source
La fonction bind crée une nouvelle fonction avec le même corps de fonction que la fonction qu'elle appelle. Elle est appelée avec l'argument this .pourquoi nous utilisons bind fun. : chaque fois qu'une nouvelle instance est créée et que nous devons utiliser la première instance initiale, nous utilisons alors bind fun. Nous ne pouvons pas remplacer le bind fun. il stocke simplement l'objet initial de la classe.
la source
Une autre utilisation est que vous pouvez passer une fonction liée comme argument à une autre fonction qui fonctionne dans un autre contexte d'exécution.
la source
Exemple simple
la source
Méthode de liaison
Une implémentation de liaison pourrait ressembler à ceci:
La fonction de liaison peut prendre n'importe quel nombre d'arguments et renvoyer une nouvelle fonction .
La nouvelle fonction appellera la fonction d'origine à l'aide de la
Function.prototype.apply
méthode JS .La
apply
méthode utilisera le premier argument passé à la fonction cible comme contexte (this
), et le deuxième argument de tableau de laapply
méthode sera une combinaison du reste des arguments de la fonction cible, concaténé avec les arguments utilisés pour appeler le retour fonction (dans cet ordre).Un exemple peut ressembler à ceci:
la source
Explication simple:
bind () crée une nouvelle fonction, une nouvelle référence à une fonction qu'elle vous renvoie.
En paramètre après ce mot-clé, vous passez le paramètre que vous souhaitez préconfigurer. En fait, il ne s'exécute pas immédiatement, se prépare simplement à l'exécution.
Vous pouvez préconfigurer autant de paramètres que vous le souhaitez.
Exemple simple pour comprendre la liaison:
la source
bind est une fonction disponible dans le prototype de script java, comme son nom l'indique, bind est utilisé pour lier votre appel de fonction au contexte dans lequel vous traitez, par exemple:
la source