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 :
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!