Oubliez toujours l'utilisation de ces deux choses et notez-les pour faire un enregistrement.
Leurs fonctions sont exactement les mêmes, mais les paramètres passés sont différents
appliquer
Appliquer accepte deux paramètres. Le premier formule le pointage de cet objet dans le corps de la fonction, et le second est un ensemble avec des indices (l'objet peut être traversé). La méthode d'application transmet les éléments de cet ensemble sous forme de paramètres à la fonction appelée:
var func = fonction (a, c, c) {alert ([a, b, c]); //--S1,2,3 LOCTURE }func.Apply(null, [1,2,3]);appel
Les paramètres passés dans l'appel ne sont pas fixes. La même chose que s'applique est que le premier paramètre représente également ce pointage dans le corps de la fonction. Après le début du deuxième paramètre, chaque paramètre est passé dans la fonction en séquence:
var func = fonction (a, b, c) {alert ([a, b, c]); //001,2,3 LOCTURE }func.Call(null, 1,2,3);L'appel est un sucre syntaxique de tous. Si le premier paramètre est nul, cela dans le corps de fonction pointe vers l'objet hôte, qui est la fenêtre du navigateur.
Utilisations de l'appel et appliquez
1. Changez ce point
L'exemple ci-dessus est
2. function.prototype.bind
Simuler function.prototype.bind
Function.prototype.bind = function (context) {var self = this; return function () {return self.apply (contexte, arguments); }}; var obj = {name: 'cxs'}; var func = function () {alert (this.name); // cxs} .bind (obj); fun ();