Maison  >  Article  >  interface Web  >  Résumé des compétences call() et apply() des méthodes_javascript d'héritage js

Résumé des compétences call() et apply() des méthodes_javascript d'héritage js

WBOY
WBOYoriginal
2016-05-16 16:28:241554parcourir

1. Définition de la méthode

méthode d'appel :
Syntaxe : call([thisObj[,arg1[, arg2[, [,.argN]]]]])
Définition : Appelez une méthode d'un objet pour remplacer l'objet actuel par un autre objet.
Descriptif :
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.

Méthode d'application :
Syntaxe : apply([thisObj[,argArray]])
Définition : Appliquer une méthode d'un objet pour remplacer l'objet actuel par un autre objet.
Descriptif :
Si argArray n'est pas un tableau valide ou n'est pas un objet arguments, une TypeError sera provoquée.
Si ni argArray ni thisObj ne sont fournis, l'objet Global sera utilisé comme thisObj et aucun paramètre ne pourra être transmis.

2. Exemples courants

un、

Copier le code Le code est le suivant :

fonction ajouter(a,b)
{
alerte(a b);
}
fonction sub(a,b)
{
alerte(a-b);
}
add.call(sub,3,1);

Cet exemple signifie remplacer sub par add, add.call(sub,3,1) == add(3,1), donc le résultat en cours d'exécution est : alert(4); // Remarque : in js ; La fonction est en fait un objet et le nom de la fonction est une référence à l'objet Function.

b、

Copier le code Le code est le suivant :

fonction Animal(){ 
This.name = "Animal";
This.showName = function(){
alert(ce.nom);
}  

fonction Chat(){ 
This.name = "Chat";

var animal = nouvel Animal();
var chat = nouveau Chat();
//Grâce à la méthode call ou apply, la méthode showName() appartenant à l'origine à l'objet Animal est transmise à l'objet cat pour utilisation. 
//Le résultat d'entrée est "Cat"
animal.showName.call(cat,",");
//animal.showName.apply(cat,[]);

call signifie mettre la méthode animal sur cat pour exécution. À l'origine, cat n'avait pas de méthode showName() Maintenant, la méthode showName() de animal est mise sur cat pour exécution, donc this.name devrait être Cat

.

c. Mettre en œuvre l'héritage

Copier le code Le code est le suivant :

function Animal(nom){ 
This.name = nom;
This.showName = function(){ This.showName = function(){
alert(ce.nom);
}  

function Chat(nom){ 
Animal.call(ce, nom);

var cat = new Cat("Chat Noir"); 
cat.showName();

Animal.call(this) signifie utiliser l'objet Animal à la place de cet objet. Alors Cat n'a-t-il pas toutes les propriétés et méthodes d'Animal ? L'objet Cat peut appeler directement les méthodes et propriétés d'Animal.

d. Héritage multiple

Copier le code Le code est le suivant :

fonction Class10()
{
This.showSub = fonction(a,b)

alerte(a-b);
}  
}
fonction Class11()
{
This.showAdd = function(a,b)

alerte(a b);
}  
}
fonction Class2()
{
Class10.call(ce);
Class11.call(ce);
}

C'est très simple, utilisez deux appels pour obtenir un héritage multiple
Bien sûr, il existe d'autres moyens d'hériter de js, comme l'utilisation de chaînes de prototypes. Cela n'entre pas dans le cadre de cet article. J'explique simplement l'utilisation de call ici. En parlant d'appel, et bien sûr d'appliquer, 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 tableau, ou il peut s'agir d'arguments <.> Et appelé, appelant..

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