Maison >interface Web >js tutoriel >Résumé des compétences call() et apply() des méthodes_javascript d'héritage js
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、
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、
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
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
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..