Maison >interface Web >js tutoriel >Explication détaillée de l'utilisation simple de apply et call en js

Explication détaillée de l'utilisation simple de apply et call en js

小云云
小云云original
2017-12-28 09:14:541423parcourir

Call et apply semblent changer cela de manière dynamique. Lorsqu'un objet n'a pas une certaine méthode, mais que d'autres en ont, nous pouvons utiliser call ou apply pour fonctionner en utilisant les méthodes d'autres objets. Cet article présente principalement en détail l'utilisation simple de apply et call in js. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer. J'espère que cela pourra aider tout le monde.

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 des attributs d'appel et d'application. . Puisqu'il s'agit d'attributs de méthodes, leur utilisation est bien sûr spécifique aux méthodes. Ces deux méthodes se confondent facilement car elles ont la même fonction, mais elles sont simplement utilisées de manières différentes
De ce qui précède, on peut conclure que. call, apply Il est utilisé pour les méthodes, afin de changer le pointeur this d'appel de la méthode

Exemple simple :

call

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 il y en a une dans la méthode getName() de la fonction A, a.getName() est naturellement établie, mais que se passe-t-il 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() pointe vers a,. call pointe dynamiquement ceci vers b et devient b.getName()

apply

apply est différent de call uniquement 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

Général l'utilisation de call et apply

est couramment utilisée. 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("*"));

pour que domNodes puisse appliquer toutes les méthodes sous Array.

Recommandations associées :

Explication détaillée des exemples d'utilisation d'application et d'appel en javascript pour modifier le point interne du corps de la fonction

appeler en js () et appliquer la compréhension

Ceci en Js pointe vers le problème de apply().call(), bind()

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