Maison >interface Web >js tutoriel >Résumé des connaissances de Function.prototype.apply() et Function.prototype.call()_Basic

Résumé des connaissances de Function.prototype.apply() et Function.prototype.call()_Basic

WBOY
WBOYoriginal
2016-05-16 15:03:311676parcourir

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();

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