Maison >interface Web >js tutoriel >Explication détaillée de la méthode d'appel en js

Explication détaillée de la méthode d'appel en js

小云云
小云云original
2018-03-22 16:16:093559parcourir

Cet article partage principalement avec vous l'explication détaillée de la méthode d'appel en js. J'espère qu'il pourra vous aider.

méthode d'appel
Voir
S'applique à : Objet fonction
Nécessite
Version 5.5
Appelle une méthode sur 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 à la place 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 le paramètre thisObj n'est pas fourni, l'objet Global est utilisé comme thisObj.
À première vue, il est facile de se tromper, alors faisons 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, c'est utiliser add pour remplacer sub, add.call(sub,3,1) == add(3,1) , le résultat en cours d'exécution est donc : 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.
Regardez 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(). mettez le showNam de c1 La méthode () est mise 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, vous pensez que c'est intéressant , vous pouvez laisser un objet exécuter la méthode de l'objet b , ce à quoi 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, puis dans. Class2 Vous n'avez pas 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 »); JavaScript est né. Pour simuler l'héritage 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); 
}
C'est très simple. Utilisez deux appels pour obtenir un héritage multiple

Bien sûr, il existe d'autres méthodes d'héritage en js, comme l'utilisation de chaînes de prototypes. article. C'est juste expliqué ici. Utilisation de call
J'ai mentionné call, et bien sûr, 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 un array .

Recommandations associées :

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

Instructions d'utilisation de la méthode __call php

Introduction détaillée à la méthode d'appel js (héritage de js)_Connaissances de base

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