Maison  >  Article  >  interface Web  >  Explication détaillée de l'utilisation de apply et call en js (avec code)

Explication détaillée de l'utilisation de apply et call en js (avec code)

php中世界最好的语言
php中世界最好的语言original
2018-04-16 09:30:321388parcourir

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!

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