Maison > interface Web > js tutoriel > le corps du texte

Explication détaillée de la façon d'utiliser la méthode d'application de fonction en Javascript

伊谢尔伦
Libérer: 2017-07-20 14:10:09
original
2322 Les gens l'ont consulté

Function.prototype.apply()

La méthode apply est similaire à la méthode call Elle change également le point de ceci (la portée où la fonction est exécutée. ), puis dans Appeler cette fonction dans la portée spécifiée. La fonction sera également exécutée immédiatement. La seule différence est qu'il reçoit un tableau en paramètre lors de l'exécution de la fonction.

Le premier paramètre de la méthode apply est également l'objet vers lequel cela pointe. S'il est défini sur null ou undefined ou this, cela équivaut à spécifier l'objet global. Le deuxième paramètre est un tableau, et tous les membres du tableau sont utilisés tour à tour comme paramètres et transmis à la fonction d'origine lors de l'appel. Les paramètres de la fonction d'origine doivent être ajoutés un par un dans la méthode call, mais dans la méthode apply, ils doivent être ajoutés sous forme de tableau.

Regardez les nuances de l'appel et postulez.


function keith(a, b) {
 console.log(a + b);
 }
 keith.call(null, 2, 3); //5
 keith.apply(null, [2, 3]); //5
Copier après la connexion

Dans le code ci-dessus, le premier paramètre est nul, pointant vers la portée globale ; le deuxième paramètre est passé sous une forme légèrement différente.

La méthode d'application a les applications suivantes.

3.1 : Trouver le nombre maximum dans un tableau


var a = [2, 4, 5, 7, 8, 10];
console.log(Math.max.apply(null, a)); //10
console.log(Math.max.call(null,2, 4, 5, 7, 8, 10)); //10 
Copier après la connexion

Javascript ne permet pas de trouver le nombre maximum dans une méthode tableau, combinée aux méthodes apply et Math.max héritées de Function.prototype, vous pouvez renvoyer la valeur maximale du tableau.

3.2 : Changez l'élément vide du tableau en non défini

Utilisez la méthode apply pour utiliser le constructeur Array pour changer l'élément vide du tableau en non défini.

console.log(Array.apply(null, [1, , 3])); // [1, undefined, 3]

La différence entre les éléments vides et indéfinis est que la méthode forEach du tableau ignorera les éléments vides, mais n'ignorera pas les éléments indéfinis et nuls. Par conséquent, en parcourant les éléments internes, vous obtiendrez des résultats différents.


var a = [1, , 3];
 a.forEach(function(index) {
 console.log(index); //1,3 ,跳过了空元素。
 })
 Array.apply(null,a).forEach(function(index){
 console.log(index); ////1,undefined,3 ,将空元素设置为undefined
 })
Copier après la connexion

3.3 : Convertir un objet de type tableau

De plus, en utilisant la méthode slice de l'objet tableau, vous pouvez convertir un objet comme si les objets Array (tels que les objets arguments) étaient convertis en tableaux réels. Bien entendu, une application importante de la méthode slice consiste à convertir des objets de type tableau en tableaux réels. Call et apply peuvent tous deux implémenter cette application.


console.log(Array.prototype.slice.apply({0:1,length:1})); //[1]
console.log(Array.prototype.slice.call({0:1,length:1})); //[1]
console.log(Array.prototype.slice.apply({0:1,length:2})); //[1,undefined]
console.log(Array.prototype.slice.call({0:1,length:2})); //[1,undefined]
function keith(a,b,c){
 return arguments;
 }
console.log(Array.prototype.slice.call(keith(2,3,4))); //[2,3,4]
Copier après la connexion

Les paramètres des méthodes d'appel et d'application dans le code ci-dessus sont tous des objets, mais les résultats renvoyés sont tous des tableaux, ce qui sert à convertir les objets en tableaux. Comme vous pouvez le voir dans le code ci-dessus, le principe du fonctionnement de cette méthode est que l'objet en cours de traitement doit avoir un attribut de longueur et une clé numérique correspondante.

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!

É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