Appliquer () Définition de la méthode
La méthode applique () de la fonction et la méthode d'appel ont la même fonction, mais la différence est que les paramètres reçus sont différents.
La méthode applique () reçoit deux paramètres, l'un est un objet et l'autre est un tableau de paramètres.
Fonction appliquer ()
1. Utilisé pour étendre la portée de la fonction
Exemple:
var color = 'red'; var o = {couleur: 'bleu'}; function saycolor () {console.log (this.color);} sayColor (); // "red" sayColor.Apply (o); // "bleu"Ici, la fonction est dynamiquement liée à l'objet O via la méthode applique (). À l'heure actuelle, cela pointe vers l'objet O et obtient le résultat "bleu".
2. Les objets n'ont pas besoin d'avoir une relation de couplage avec les méthodes.
Donnons un exemple de couplage ci-dessous pour voir comment résoudre ce couplage en appliquant.
var color = 'red'; var o = {couleur: 'bleu'}; function sayColor () {console.log (this.color);} o.sayColor = SayColor; o.sayColor (); // "Blue"Ici, la fonction est d'abord placée dans l'objet O, et l'objet et la méthode sont étroitement couplés, et l'appel de méthode doit passer par l'objet o.
Il n'est pas aussi flexible que d'utiliser des méthodes applicables () et call ().
Refactor le code ci-dessus pour obtenir le code dans l'exemple précédent.
var color = 'red'; var o = {couleur: 'bleu'}; function saycolor () {console.log (this.color);} sayColor (); // "red" sayColor.Apply (o); // "bleu"Il n'y a pas de méthode liée à l'objet ici, mais lorsqu'il est nécessaire de l'utiliser, utilisez la méthode d'application ou d'appel de la fonction pour la lier dynamiquement.
Il n'y a pas de couplage entre les objets et les méthodes. Ici, il peut également être fait via la méthode Bind () fournie par ES5.
3. Implémentez le transfert de paramètre de fonction de paramètre variable
La fonction suivante pour calculer la valeur moyenne de n'importe quel nombre
moyen (,,); moyen (); moyen (,,,,,,); moyen (,,,,,,); moyen (,,,,,,,,););
La fonction moyenne est un exemple appelé paramètre mutable ou fonction d'élément mutable (le nombre d'éléments d'une fonction se réfère au nombre de paramètres souhaités).
Bien sûr, cette fonction peut également être écrite sous la forme d'un tableau de réception.
Moyenne-OfArray ([,,]); moyenne de la chaîne ([]); moyenne de la radiation ([,,,,,,,,,]); moyenne de la radiation ([,,,,,,,,,,]);
Les fonctions qui utilisent des paramètres variables sont plus concises et élégantes. Les fonctions de paramètres variables ont une syntaxe pratique, permettant au moins à l'appelant de savoir à l'avance combien de paramètres sont fournis.
Si j'ai un tableau comme celui-ci
var scores = getAllScores ();
Comment calculer la valeur moyenne en utilisant la fonction moyenne?
1. Version de la fonction de paramètre variable.
À l'heure actuelle, il peut être utilisé en conjonction avec la méthode Apply (). Parce que la fonction n'utilise pas de référence cette variable, nous passons un NULL pour le premier paramètre. Le code est le suivant:
VAR SCORES = GetAllScores (); moyen.Apply (null, scores);
2. Les paramètres directs sont sous la forme d'un tableau
Ici, vous pouvez passer directement les paramètres du tableau.
SCORES VAR = GETALLSCORES (); moyen deaRray (scores);
Je pense personnellement que les deux formes ci-dessus sont correctes, mais la seconde est plus simple. En savoir plus sur une méthode, qui peut être facilement traitée lors de la rencontre des fonctions écrites par d'autres sans refactoriser le code. Cet avantage est encore plus.
4. Implémentez le transfert de valeur des méthodes de paramètres variables
Exemple: l'objet tampon contient une méthode d'ajout de paramètre mutable, qui est ajoutée au tableau d'état à l'intérieur de la fonction.
var buffer = {état: [], append: function () {for (var i =, n = arguments.length; i <n; i ++) {this.state.push (arguments [i]);}}};À l'heure actuelle, la méthode d'ajout peut accepter les multiples paramètres.
Buffer.APPEND ('Hello,'); buffer.append ('firtname', '', 'lastname', '!'); tamper.append ('newline');Se former comme
Buffer.APPEND (Arg1, Arg2, Arg3, ...)
Avec ce paramètre de la méthode d'application, nous pouvons spécifier un tableau calculable pour appeler la méthode d'ajout.
Buffer.APPEND.Apply (Buffer, GetInputStrings ());
Remarque: le tampon ici est important. Si un objet différent est passé, la méthode d'ajout tentera de modifier la propriété d'état du mauvais objet.
indice
• Utilisez la méthode Appliquer pour spécifier un tableau de paramètres calculable pour appeler une fonction avec des paramètres mutables
• Utilisez le premier paramètre de la méthode Appliquer pour fournir un récepteur pour la méthode du paramètre variable
Annexe 1
fonction moyenne
fonction moyenne () {var args = []. Slice.Call (arguments); var sum = args.reduce (fonction (prev, cur) {return Prev + cur;}); return parseInt (sum / args.length,);}Fonction moyenne de la chaîne
Fonction Moyenne OfArray (arr) {var sum = arr.reduce (fonction (prev, cur) {return Prev + cur;}); return parseInt (sum / arr.length,);}Méthode ES5 Bind ()
Cette méthode crée une instance d'une fonction dont la valeur est liée à la valeur transmise à la fonction bind ().
Par exemple
var color = 'red'; var o = {couleur: 'bleu'}; fonction sayColor () {console.log (this.color);} var osaycolor = sayColor.bind (o); osaycolor (); // "bleu"Compatible avec les versions inférieures, reportez-vous à la version suivante:
if (! function.prototype.bind) {function.prototype.bind = function (othis) {if (typeof this! == 'function') {// la plus proche possible de l'ECMascript // Iscallable functionthrow new typeError ('function.prototype.bind ). un prototype propertyfnop.prototype = this.prototype; } fbound.prototype = new fnop (); return fbound;};}