JavaScript .appeler() .appliquer() et .bind () – expliqué à un total Noob

JavaScript a un certain nombre de fonctions/méthodes intégrées qui peuvent s’appliquer à différents types de données.

tout comme .split(« ”) peuvent s’appliquer à une chaîne .appeler(), .appliquer() et .bind() sont des méthodes de fonctions.

Ces 3 fonctions sont toutes conçues pour définir le contexte, ou plus précisément ce à quoi « ceci” fait référence.

la plupart du temps, vous définissez toujours « ceci” ou l’incluez spécifiquement dans une fonction., Par exemple, disons que vous avez un objet:

var owen = { name: "Owen"}

et que vous voulez référencer cet objet en utilisant une fonction:

function sayTo(person, first, second){ return first + " " + person.name + " " + second;}sayTo(owen, "Hi", "how are you?");
//returns "Hi Owen how are you?"

maintenant, si la fonction sayTo est invoquée sur Owen, avec 2 arguments, elle s’appellerait correctement, car

maintenant, et si sayTo était défini un peu différemment?

Le premier argument, owen, va à la première variable, « hi” va à la deuxième variable, et « comment allez-vous? »ne va nulle part, et this.name est indéfini, car ce n’est pas l’objet owen.

Le ceci lorsque vous console.,connectez-le, renvoie en fait l’objet global window.

à l’Aide .call()

.call() permet à l’sayTo fonction:

La notation est la suivante:

functionName.call(value of this, arg1, arg2…)

.l’appel force essentiellement la valeur dans ceci dans n’importe quelle fonction .l’appel est appliquée. Dans ce cas, nous invoquons la fonction sayTo. .call (owen, owen) force le Ceci de sayTo () à être l’objet owen. Ainsi this.name est applicable.

« Salut” et » comment allez-vous? »sont entrés en tant que deuxième ou troisième argument de la fonction sayTo (qui prend 2 arguments).

à l’Aide .appliquer()

à l’Aide .,apply() est très similaire .appeler. La seule différence est que .call() prend arg1 et arg2 l’un après l’autre.

Pour les .appliquer() de travail, les arguments 1 et 2 doivent être saisies dans un tableau:

Le format est comme suit:

functionName.apply(value of this, )

Notez que arg1 et arg2 sont entrées sous forme de tableau.

à l’Aide .bind()

.bind (), contrairement .appliquer() et .call(), retourne une fonction au lieu d’une valeur.

.bind () définit la valeur de ceci et change la fonction en une nouvelle fonction, mais elle n’appelle pas la fonction.,

var owen = {name: "Owen”}function sayTo(first, second){return first + " " + this.name + " " + second;}var sayToOwen = sayTo.bind(owen);

essentiellement, sayToOwen est créé en tant que nouvelle fonction. Ce qui est techincally:

var sayToOwen = function(first, second){ return first + " " + owen.name + " " + second;}

Vous pouvez ensuite exécuter sayToOwen en tant que fonction normale.

Vous pouvez aussi « lier” les arguments de sayTo() comme ceci:

var owen = {name: "Owen”}function sayTo(first, second){return first + " " + this.name + " " + second;}var sayHiToOwen = sayTo.bind(owen, "Hi");

La variable sayHiToOwen devient alors:

var SayHiToOwen = function(second){
return "Hi" + " " + owen.name + " " + second;}

en Résumé

Leave a Comment