Maison > interface Web > js tutoriel > utilisation des appels js

utilisation des appels js

hzc
Libérer: 2020-07-03 11:00:38
avant
2342 Les gens l'ont consulté

call method
Appelle une méthode d'un objet, en remplaçant l'objet actuel par un autre objet.
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
Paramètres
thisObj
Facultatif. L'objet qui sera utilisé comme objet actuel.
arg1, arg2, , argN
Facultatif. Une séquence de paramètres de méthode sera transmise.
Description
La méthode call peut être utilisée pour appeler une méthode au nom d'un autre objet. La méthode d'appel modifie le contexte d'objet d'une fonction du contexte initial au nouvel objet spécifié par thisObj.
Si aucun paramètre thisObj n'est fourni, l'objet Global est utilisé comme thisObj.
À première vue, il est facile de confondre les gens, alors donnons d'abord quelques explications simples
obj1.method1.call(obj2,argument1,argument2)
Comme ci-dessus, la fonction de call est de mettre le méthode d'obj1 Utilisez-le sur obj2, et les arguments suivants1..sont transmis en tant que paramètres.
Donnez un exemple spécifique

function add(a,b) { 
   alert(a+b); 
 } 
 function sub(a,b) { 
  alert(a-b); 
 } 
 add.call(sub,3,1);
Copier après la connexion

Ce que cet exemple signifie est de remplacer sub par add, add.call(sub,3,1) == add(3,1), donc l'exécution le résultat est : alert(4); // Remarque : les fonctions dans js sont en fait des objets et le nom de la fonction est une référence à l'objet Function.
Regardons un exemple légèrement plus compliqué

function Class1() { 
     this.name = "class1"; 
     this.showNam = function() { 
         alert(this.name); 
     } 
} 
function Class2() { 
     this.name = "class2"; 
} 
var c1 = new Class1(); 
var c2 = new Class2(); 
c1.showNam.call(c2)
Copier après la connexion

Notez que l'appel signifie mettre la méthode de c1 sur c2 pour l'exécution. À l'origine, c2 n'avait pas de méthode showNam(). Il s'agit maintenant de mettre. la méthode showNam() de c1. La méthode est placée sur c2 pour l'exécution, donc this.name devrait être class2, et le résultat de l'exécution est : alert ("class2");
Qu'en pensez-vous, c'est intéressant, vous pouvez laisser l'objet a exécuter la méthode de l'objet b, c'est quelque chose auquel les programmeurs Java n'osent pas penser. Ce qui est plus intéressant, c'est que vous pouvez utiliser call pour implémenter l'héritage

function Class1(){ 
      this.showTxt = function(txt) { 
          alert(txt); 
      } 
 } 
 function Class2() { 
      Class1.call(this); 
 } 
 var c2 = new Class2(); 
 c2.showTxt("cc");
Copier après la connexion

De cette façon, Class2 hérite de Class1.call(this) signifie utiliser l'objet Class1 au lieu de cet objet. t Avez-vous toutes les propriétés et méthodes de Class1 ? L'objet c2 peut appeler directement les méthodes et propriétés de Class1. Le résultat de l'exécution est : alert ("cc"); comment fonctionne javaScript Pour simuler l'héritage en mode orienté objet, l'héritage multiple peut également être implémenté.

function Class10() { 
      this.showSub = function(a,b)  { 
          alert(a-b); 
      } 
 } 
 function Class11() { 
      this.showAdd = function(a,b) { 
          alert(a+b); 
      } 
 } 
 function Class2() { 
      Class10.call(this); 
      Class11.call(this); 
 }
Copier après la connexion

C'est très simple, il suffit d'utiliser deux appels pour obtenir un héritage multiple Bien sûr, il existe d'autres moyens d'hériter de js, comme utiliser la chaîne de prototypes, ce qui n'est pas dans le cadre de cet article, mais c'est juste ici Expliquez l'utilisation de call

J'ai mentionné call, et bien sûr s'appliquent, ces deux méthodes signifient fondamentalement la même chose
La différence est que le deuxième paramètre de call peut être de n'importe quel type, tandis que le deuxième paramètre de apply doit être Array


Tutoriel recommandé : "

Tutoriel JS

"

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:cnblogs.com
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