Chaque fonction contient deux propriétés: longueur et prototype
Longueur: le nombre de paramètres nommés que la fonction actuelle souhaite accepter
Prototype: est le véritable moyen de préserver toute leur force
La copie de code est la suivante:
Fonction saitName (name) {
alerte (nom);
}
fonction sum (num1, num2) {
return num1 + num2;
}
fonction sayshi () {
alert ("hi");
}
alert (sayName.length); // 1 nombre de paramètres
alerte (sum.length); // 2 Nombre de paramètres: 2
alerte (sayhi.length); // 0 aucun paramètre
Chaque fonction contient deux méthodes non héritées: appliquer () et appeler ()
Les deux méthodes appellent les fonctions dans une portée spécifique, qui est en fait égale à la définition de la valeur de cet objet dans le corps de la fonction
D'abord appliquer () accepte deux paramètres: l'un est la portée de la fonction exécutée, et l'autre est le tableau de paramètres (peut être une instance de tableau ou un objet d'argument)
La copie de code est la suivante:
fonction sum (num1, num2) {
return num1 + num2;
}
Fonction Callsum1 (num1, num2) {
return sum.apply (this, arguments); // passer dans les arguments objet
}
Fonction Callsum2 (num1, num2) {
return sum.apply (ceci, [num1, num2]);
}
alerte (CALSUM1 (10, 10)); // 20
alerte (CALSUM2 (10, 20)); // 30
Deuxièmement, le premier paramètre de la méthode d'appel n'a pas changé. Ce qui modifie, c'est que les autres paramètres sont passés par des paramètres, et les paramètres transmis à la fonction doivent être répertoriés un par un.
La copie de code est la suivante:
fonction sum (num1, num2) {
return num1 + num2;
}
Fonction Callsum (num1, num2) {
return sum.call (this, num1, num2);
}
alerte (calcul (10, 200));
Quant à quelle méthode est la plus pratique, cela dépend entièrement de vos souhaits. S'il n'y a pas de paramètres, ce sera la même chose que de l'utiliser.
Cependant, l'apparence des méthodes d'application et d'appel n'est certainement pas seulement pour supprimer les paramètres de la coque.
Leur utilisation réelle réside dans la portée sur laquelle dépendent les fonctions d'extension.
La copie de code est la suivante:
window.color = "red";
var o = {couleur: "bleu"};
Fonction saitColor () {
alerte (this.color);
}
sayColor (); // rouge
saycolor.call (this); // rouge
saycolor.call (fenêtre); // rouge
saycolor.call (o); // bleu
Le plus grand avantage de l'utilisation d'appliquer et d'appeler pour étendre la portée est qu'il n'est pas nécessaire d'avoir une relation de couplage avec la méthode.
Ecmascript5 définit également une méthode: bind (). Cette méthode crée une instance d'une fonction dont la valeur sera liée à la valeur transmise à la fonction de liaison
La copie de code est la suivante:
window.color = "red";
var o = {couleur: "bleu"};
Fonction saitColor () {
alerte (this.color);
}
var bindfun = sayColor.bind (o);
bindFun (); // bleu
Ce qui précède est tout sur cet article, j'espère que vous pourrez l'aimer.