Jede Funktion enthält zwei Eigenschaften: Länge und Prototyp
Länge: Die Anzahl der benannten Parameter, die die aktuelle Funktion akzeptieren möchte
Prototyp: Ist der wahre Weg, um ihre ganze Kraft zu bewahren
Die Codekopie lautet wie folgt:
Funktion Sayname (Name) {
alarm (Name);
}
Funktionsumme (Num1, Num2) {
return num1 + num2;
}
Funktion Sayshi () {
alarm ("hi");
}
alarm (sayname.length); // 1 Anzahl der Parameter
Alert (sum.Length); // 2 Anzahl der Parameter: 2
alert (Sayhi.length); // 0 Keine Parameter
Jede Funktion enthält zwei nicht unterhörte Methoden: apply () und call ()
Beide Methoden rufen Funktionen in einem bestimmten Bereich auf, das tatsächlich gleich der Festlegung des Wertes dieses Objekts in der Funktionskörper ist
Zuerst anwenden () akzeptiert zwei Parameter: Einer ist der Umfang der ausgeführten Funktion, und das andere ist das Array von Parametern (kann eine Array -Instanz oder ein Argumentobjekt sein)
Die Codekopie lautet wie folgt:
Funktionsumme (Num1, Num2) {
return num1 + num2;
}
Funktion Callum1 (Num1, Num2) {
Return sum
}
Funktion Callum2 (Num1, Num2) {
return sum.apply (this, [num1, num2]);
}
Alert (Callum1 (10, 10)); // 20
Alert (Callum2 (10, 20)); // 30
Zweitens hat sich der erste Parameter der Anrufmethode nicht geändert. Was sich ändert, ist, dass die anderen Parameter übergeben werden, und die an die Funktion übergebenen Parameter müssen einzeln aufgeführt werden.
Die Codekopie lautet wie folgt:
Funktionsumme (Num1, Num2) {
return num1 + num2;
}
Funktion Callum (Num1, Num2) {
return sum.call (this, num1, num2);
}
Alert (Callum (10, 200));
Was für welche Methode bequemer ist, hängt sie vollständig von Ihren Wünschen ab. Wenn es keine Parameter gibt, ist es die gleiche wie die Verwendung.
Das Erscheinungsbild von Anwendungs- und Anrufmethoden gilt jedoch definitiv nicht nur, um die Rumpfparameter zu entfernen.
Ihre wirkliche Verwendung liegt im Bereich, von dem die Erweiterungsfunktionen abhängen.
Die Codekopie lautet wie folgt:
Fenster.Color = "rot";
var o = {Farbe: "blau"};
Funktion sageColor () {
alarm (this.color);
}
saycolor (); // rot
saycolor.call (this); // rot
saycolor.call (Fenster); // rot
saycolor.call (o); // blau
Der größte Vorteil der Verwendung von Antrag und Anruf zur Erweiterung des Umfangs besteht darin, dass keine Kopplungsbeziehung mit der Methode erforderlich ist.
ECMascript5 definiert auch eine Methode: Bind (). Diese Methode erstellt eine Instanz einer Funktion, deren Wert an den Wert gebunden ist, der an die Bindungsfunktion übergeben wird
Die Codekopie lautet wie folgt:
Fenster.Color = "rot";
var o = {Farbe: "blau"};
Funktion sageColor () {
alarm (this.color);
}
var bindfun = sayColor.bind (o);
bindfun (); // blau
Das obige dreht sich alles um diesen Artikel. Ich hoffe, Sie können es mögen.