Méthodes d'appel en JavaScript : exploration de apply() et call()
Lors de l'appel de fonctions en JavaScript, vous disposez de deux méthodes principales : à votre disposition : apply() et call(). Les deux vous permettent d'exécuter des fonctions avec une valeur this spécifiée, mais ils diffèrent dans la manière dont les arguments sont transmis.
apply(thisValue, argumentsArray)
- Constructions un tableau à partir des argumentsArray fournis.
- Appelle la fonction avec la valeur thisValue spécifiée et les éléments du tableau comme étant individuels arguments.
- Exemple :
const func = function() {
console.log("Hello world!");
};
func.apply(null, ["John", 35]); // Invokes "Hello world!" and logs "John" and 35.
Copier après la connexion
call(thisValue, arg1, arg2, ...argN)
- Traite les arguments comme des paramètres individuels.
- Appelle le fonction avec la valeur thisValue spécifiée et les arguments fournis sous forme de valeurs distinctes.
- Exemple :
func.call(null, "John", 35); // Invokes "Hello world!" and logs "John" and 35.
Copier après la connexion
Mnémoniques :
- Appliquer : A pour un tableau de arguments.
- Appel : C pour les arguments séparés par des virgules.
Différences de performances :
- Il existe généralement des différences de performances négligeables entre apply() et call().
- Cependant, apply() peut être légèrement plus rapide lorsqu'il s'agit de traiter un grand nombre d'arguments.
Meilleurs cas d'utilisation :
-
Utiliser apply() : Lorsque vous souhaitez transmettre un tableau d'arguments à une fonction, notamment lorsque le nombre d'arguments est inconnu dans advance.
-
Utilisez call() : Lorsque vous souhaitez transmettre des arguments individuels à une fonction et avoir plus de contrôle sur leur ordre.
ES6 Ajouts :
- Dans ES6, vous pouvez utiliser l'opérateur spread avec call() pour répartir un tableau en individus arguments.
- Exemple :
func.call(null, ...["John", 35]); // Same as func.apply(null, ["John", 35]).
Copier après la connexion
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!