apply () Methodendefinition
Die Methode der Anwendung () der Funktion und der Aufrufmethode haben die gleiche Funktion, aber der Unterschied besteht darin, dass die empfangenen Parameter unterschiedlich sind.
Die Methode apply () empfängt zwei Parameter, eines ist ein Objekt und das andere ist ein Array von Parametern.
anwenden () Funktion
1., verwendet, um den Umfang der Funktion zu erweitern
Beispiel:
var color = 'rot'; var o = {color: 'blau'}; Funktion sageColor () {console.log (this.color);} SayColor (); // "rot" saycolor.apply (o); // "blau"Hier ist die Funktion dynamisch an das Objekt O durch die Methode apply () gebunden. Zu diesem Zeitpunkt weist dies auf das O -Objekt hin und erhält das Ergebnis "Blau".
2. Objekte müssen keine Kopplungsbeziehung mit Methoden haben.
Geben wir unten ein Beispiel für die Kopplung an, um zu sehen, wie diese Kopplung durch Bewerbung gelöst werden kann.
var color = 'rot'; var o = {color: 'blau'}; Funktion sageColor () {console.log (this.color);} o.saycolor = SayColor; o.saycolor (); // "blau"Hier wird die Funktion zuerst in das Objekt O platziert, und das Objekt und die Methode sind eng zusammengekoppelt, und der Methodenaufruf muss das Objekt O.
Es ist nicht so flexibel wie die Verwendung von apply () und call () Methoden.
Refactor den obigen Code, um den Code im vorherigen Beispiel zu erhalten.
var color = 'rot'; var o = {color: 'blau'}; Funktion sageColor () {console.log (this.color);} SayColor (); // "rot" saycolor.apply (o); // "blau"Hier gibt es keine Methode, die an das Objekt gebunden ist, aber wenn es erforderlich ist, es zu verwenden, verwenden Sie die Anwendung oder Aufrufmethode der Funktion, um sie dynamisch zu binden.
Es gibt keine Kopplung zwischen Objekten und Methoden. Hier kann es auch über die von ES5 bereitgestellte Bind () -Methode erfolgen.
3. Implementieren Sie die Parameter -Parameterübertragung der variablen Parameterfunktion
Die folgende Funktion zur Berechnung des Durchschnittswerts einer beliebigen Zahl
Durchschnitt (,,); Durchschnitt (); Durchschnitt (,,,,,); Durchschnitt (,,,,,); Durchschnitt (,,,,,,););
Die durchschnittliche Funktion ist ein Beispiel, das als veränderliche Parameter- oder Veränderungselementfunktion bezeichnet wird (die Anzahl der Elemente einer Funktion bezieht sich auf die gewünschte Anzahl von Parametern).
Natürlich kann diese Funktion auch in Form eines empfangenden Arrays geschrieben werden.
durchschnittlich ([,,]); DurchschnittOfArray ([]); DurchschnittOfArray ([,,,,,,]); durchschnittlich ([,,,,,,,]);
Funktionen, die variable Parameter verwenden, sind prägnanter und eleganter. Variable Parameterfunktionen haben eine bequeme Syntax, sodass der Anrufer zumindest im Voraus wissen kann, wie viele Parameter bereitgestellt werden.
Wenn ich ein Array wie dieses habe
var scores = getAllscores ();
Wie berechnet ich den Durchschnittswert mit der durchschnittlichen Funktion?
1. Variable Parameter -Funktion Version.
Zu diesem Zeitpunkt kann es in Verbindung mit der Methode apply () verwendet werden. Da die Funktion diese Variable nicht verwendet, übergeben wir einen Null für den ersten Parameter. Der Code ist wie folgt:
var scores = getAllscores (); durchschnitt.Apply (null, bewertet);
2. Die direkten Parameter erfolgen in Form von Array
Hier können Sie die Array -Parameter direkt übergeben.
var bewertet = getAllscores (); durchschnittlich (bewertet);
Ich persönlich denke, dass beide oben genannten zwei Formen in Ordnung sind, aber der zweite ist einfacher. Erfahren Sie mehr über eine Methode, die bei der Begegnung von Funktionen, die von anderen geschrieben wurden, leicht behandelt werden kann, ohne den Code neu zu verarbeiten. Dieser Nutzen ist noch mehr.
4. Implementieren Sie die Wertübertragung variabler Parametermethoden
Beispiel: Das Pufferobjekt enthält eine veränderliche Parameteranhangsmethode, die dem Statusarray innerhalb der Funktion hinzugefügt wird.
var buffer = {state: [], append: function () {for (var i =, n = argumente.length; i <n; i ++) {this.state.push (Argumente [i]);}}};Zu diesem Zeitpunkt kann die Anhangsmethode mehrere Parameter akzeptieren.
Buffer.Append ('Hallo,'); Buffer.Append ('firtName', '', 'LastName', '!'); Buffer.Append ('Newline');Form wie
buffer.append (arg1, arg2, arg3, ...)
Mit diesem Parameter der Anwendungsmethode können wir ein rechtzeitiges Array angeben, um die Anhangsmethode aufzurufen.
Buffer.Append.Apply (Buffer, getInputstrings ());
Hinweis: Der Puffer hier ist wichtig. Wenn ein anderes Objekt übergeben wird, versucht die Anhangsmethode, die Statuseigenschaft des falschen Objekts zu ändern.
Hinweis
• Verwenden Sie die Methode anwenden, um ein rechenbarbares Parameter -Array anzugeben, um eine Funktion mit veränderlichen Parametern aufzurufen
• Verwenden Sie den ersten Parameter der Anwendenmethode, um einen Empfänger für die Variablenparametermethode bereitzustellen
Anhang 1
durchschnittliche Funktion
Funktion durchschnittlich () {var args = [].Durchschnittliche Funktion
Funktion durchschnittlich (arr) {var sum = arr.R.REDUCE (Funktion (prev, cur) {return Prev+cur;});ES5 Bind () Methode
Diese Methode erstellt eine Instanz einer Funktion, deren Wert an den Wert gebunden ist, der an die Bind () -Funktion übergeben wird.
Zum Beispiel
var color = 'rot'; var o = {color: 'blau'}; Funktion sageColor () {console.log (this.color);} var osaycolor = SayColor.bind (o); osaycolor (); // "blau"Mit niedrigeren Versionen kompatibel finden Sie in der folgenden Version:
if (! function.prototype.bind) {function.prototype.bind = function (othis) {if (typeof this! ). PropertyFnop.Prototype = this.Prototype; } fBound.Prototype = new fnop (); return fBound;};}