Maison >interface Web >js tutoriel >Résumé des connaissances de Function.prototype.apply() et Function.prototype.call()_Basic
J'oublie toujours l'utilisation de ces deux choses et je les note pour un enregistrement.
Leurs fonctions sont exactement les mêmes, mais les paramètres transmis sont différents
postuler
apply accepte deux paramètres. Le premier spécifie le pointeur de cet objet dans le corps de la fonction. Le deuxième paramètre est une collection indicée (objet traversable). La méthode apply transmet les éléments de cette collection en tant que paramètres à l'objet. appelé :
var func = function(a, c, c){ alert([a,b,c]); //[1,2,3] } func.apply(null, [1,2,3]);
appeler
Les paramètres passés dans l'appel ne sont pas fixes. De la même manière que pour apply, le premier paramètre représente également le pointeur this dans le corps de la fonction. À partir du deuxième paramètre, chaque paramètre est passé tour à tour dans la fonction :
var func = function(a, b, c){ alert([a,b,c]); //[1,2,3] } func.call(null, 1,2,3);
call est un sucre syntaxique pour aply. Si le premier paramètre est nul, celui-ci dans le corps de la fonction pointe vers l'objet hôte, qui est la fenêtre du navigateur.
Le but d'appeler et de postuler
1. Modifiez ceci pour pointer vers
C'est l'exemple ci-dessus
2.Function.prototype.bind
Mock Function.prototype.bind
Function.prototype.bind = function(context){ var self = this; return function(){ return self.apply(context, arguments); } }; var obj = { name: 'cxs' }; var func = function(){ alert(this.name); //cxs }.bind(obj); fun();