Maison  >  Article  >  interface Web  >  Quelles sont les utilisations des méthodes call() et apply() en Javascript (Code ci-joint)

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

不言
不言original
2018-08-01 16:35:001386parcourir

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]]]]);

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);

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);

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

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 = [‘苹果’,’香蕉’,’菠萝’]

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下所有方法*/

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就是返回一个数组的长度

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!

Déclaration:
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