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);
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)
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");
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); }
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é : "
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!