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

Quelles sont les utilisations des méthodes call() et apply() en Javascript (Code ci-joint)

不言
Libérer: 2018-08-01 16:35:00
original
1390 Les gens l'ont consulté

La méthode apply() et la méthode call() en JavaScript sont des méthodes d'objets Function. Chaque objet Function aura une méthode apply() et une méthode call(). Ensuite, la méthode apply() et la méthode call(). Quelle est son utilisation et sa fonction en JavaScript ? Cet article parlera de l'utilisation de la méthode apply() et de la méthode call().

La syntaxe de la méthode apply() et de la méthode call() :

/*apply()方法*/
function.apply(thisObj[, argArray])
/*call()方法*/
function.call(thisObj[, arg1[, arg2[, [,...argN]]]]);
Copier après la connexion

Fonction : Emprunter la méthode d'un autre objet sans utiliser copie. (Peut être utilisé pour appeler une méthode au lieu d'un autre objet, en changeant le contexte d'objet d'une fonction du contexte initial au nouvel objet spécifié par thisObj)

méthode apply() et méthode call() Utilisation de base :

function add(a,b){
  return a+b;  
}
function sub(a,b){
  return a-b;  
}
var a1 = add.apply(sub,[4,2]);  //sub调用add的方法
var a2 = sub.apply(add,[4,2]);
alert(a1);  //6     
alert(a2);  //2

/*call的用法*/
var a1 = add.call(sub,4,2);
Copier après la connexion

méthode apply() et héritage d'implémentation de la méthode call() :

function Animal(name){
  this.name = name;
  this.showName = function(){
        alert(this.name);    
    }    
}

function Cat(name){
  Animal.apply(this,[name]);    
}

var cat = new Cat("咕咕");
cat.showName();

/*call的用法*/
Animal.call(this,name);
Copier après la connexion

méthode apply() et La méthode call() implémente l'héritage multiple :

    function Class10(){
      this.showSub = function(a,b){
            alert(a - b);
        }   
    }
    
    function Class11(){
      this.showAdd = function(a,b){
            alert(a + b);
        }  
    }
    
    function Class12(){
      Class10.apply(this);
      Class11.apply(this);   
      // Class10.call(this);
      //Class11.call(this);  
    }
    
    var c2 = new Class12();
    c2.showSub(3,1);    //2
    c2.showAdd(3,1);    //4
Copier après la connexion

La fonction de la méthode call() : change le pseudo-tableau en un tableau réel

Le pseudo-tableau est un L'objet json contenant l'attribut length n'est pas un vrai tableau, mais simule en fait une collection (décrivant les données de la collection)

Par exemple :

var json = {1:’苹果’,2:’香蕉’,3:’菠萝’,length:3}
Var arr = [‘苹果’,’香蕉’,’菠萝’]
Copier après la connexion

Son caractéristiques :

1. Les clés sont toutes 1, 2, 3, 4, 5
2 Il contient un attribut de longueur

Comment convertir un pseudo tableau en un. tableau réel

/*我们通过如下方式将其转换成数组*/
/*slice:截取数组,返回的还是数组,这里截取全部*/
var domNodes=Array.prototype.slice.call(divs);
/*这样domNodes就可以应用Array下所有方法*/
Copier après la connexion

Conseils d'utilisation de la méthode apply() :

Math.max peut obtenir le plus grand élément du tableau :

Parce que Math.max ne prend pas en charge Math.max([param1,param2]), qui est un tableau, mais il prend en charge Math.max(param1,param2...), donc var max= Math.max peut être résolu en fonction des caractéristiques de apply. .apply(null,array), de sorte que vous puissiez facilement obtenir le plus grand élément d'un tableau (apply convertira un tableau en paramètre et le transmettra à la méthode avec un paramètre). après l'autre).

Lors de l'appel de ce bloc, le premier paramètre est donné à null C'est parce qu'il n'y a pas d'objet pour appeler cette méthode, j'ai juste besoin d'utiliser cette méthode pour m'aider à calculer et obtenir le résultat renvoyé, donc c'est le cas. est passé directement. Un nul passe.

Vous pouvez également utiliser cette méthode pour obtenir l'élément minimum dans le tableau : Math.min.apply(null,array)

Array.prototype.push peut en implémenter deux. Fusion de tableaux

De même, la méthode push ne fournit pas de push vers un tableau, mais elle fournit push(param1, param2...paramN). Vous pouvez également utiliser apply pour convertir ce tableau, cela. est :

   var arr1=new Array("1","2","3");
    var arr2=new Array("4","5","6");
    Array.prototype.push.apply(arr1,arr2);    
    //得到合并后数组的长度,因为push就是返回一个数组的长度
Copier après la connexion

Cela peut également être compris de cette façon, arr1 appelle la méthode push, et le paramètre est un tableau converti en une collection de listes de paramètres via apply

Habituellement dans quelles circonstances, vous pouvez utiliser apply similaire à Utilisations spéciales telles que Math.max : Généralement, la fonction cible ne nécessite que n listes de paramètres et ne reçoit pas de tableau. Ce problème peut être intelligemment résolu en appliquant.

Articles connexes recommandés :

Comparaison de la méthode d'appel et de la méthode d'application en JavaScript_Connaissances de base

La méthode d'appel et d'application en JavaScript A brève discussion sur les compétences _javascript

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