Maison > Article > interface Web > Explication détaillée de l'utilisation de apply et call en js (avec code)
Cette fois, je vais vous apporter une explication détaillée de l'utilisation de apply et call en js (avec code). Quelles sont les précautions pour l'utilisation de apply et call in js. cas pratique, jetons un coup d'oeil.
Vous pouvez regarder les exemples directement, ou vous pouvez d'abord lire l'introduction :
call et apply apparaissent pour pour changer cela dynamiquement Lorsqu'un objet n'a pas une certaine méthode, mais que d'autres en ont, nous pouvons utiliser call ou apply pour fonctionner avec les méthodes d'autres objets . .
call et apply sont deux méthodes de Function.prototype, qui sont implémentées en interne par le moteur JavaScript Parce qu'elles appartiennent à Function.prototype, chaque instance d'objet Function, , c'est-à-dire que chaque méthode a un. call , applyattribute Puisqu'il s'agit d'attributs de méthodes, leur utilisation est bien sûr spécifique aux méthodes. Ces deux méthodes sont faciles à confondre car elles ont le même effet, mais elles sont utilisées de manière différente. façons.
On peut conclure de ce qui précède que call, apply est utilisé pour les méthodes, afin de changer le pointeur this de la méthode appelante
Exemple simple :
appeler
function A() { this.getName = function (xx) { return xx; } } function B() { } var a = new A(); console.log( a.getName('i am A') ); //i am A var b = new B() ; console.log( a.getName.call(b,'i am B') ); // i am B
Il n'y a pas de méthode dans la fonction B et la fonction A a une méthode getName(). a.getName() est naturellement établie, mais que dois-je faire si B doit également utiliser la méthode getName() ? Utilisez ensuite call(this,'parameter')! !
Vous pouvez à nouveau comprendre cette phrase - nous pouvons utiliser call ou apply pour appeler les méthodes d'autres objets à fonctionner. Call et apply semblent changer cela de manière dynamique. , à l'origine a.getName()'s this pointe vers a, call pointe cela dynamiquement vers b et devient b.getName()
postuler
postuler et appeler sont simplement différents dans l'utilisation des paramètres
function A() { this.sun = function (a ,b) { return a+b; } } function B() { } var a = new A(); console.log( a.sun(1,2) ); //3 var b = new B() ; console.log( a.sun.call(b,2,2) ); // 4 console.log( a.sun.apply(b,[3, 3]) ); //6
Utilisation générale d'appeler et postuler
Le plus couramment utilisé est que le nœud dom sélectionné via document.getElementsByTagName est un tableau de type tableau. Il ne peut pas appliquer de méthodes push, pop et autres sous Array. On peut passer :
var domNodes = Array.prototype.slice.call(document.getElementsByTagName("*"));
De cette façon, domNodes peut appliquer toutes les méthodes sous Array.
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !
Lecture recommandée :
Affichage des styles CSS dans Angular 4
Comment le composant vue implémente-t-il la fonction de deviner le nombre
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!