Die Einführung in Call () auf der offiziellen Website von Mozilla lautet:
Die Codekopie lautet wie folgt:
Der CALL () -Methode ruft eine Funktion oder Methode mit einem angegebenen Wert und mehreren angegebenen Parameterwerten auf.
Call () syntax
Die Codekopie lautet wie folgt:
fun.call (thisArg [, arg1 [, arg2 [, ...]]])
Call () Parameter
ThisArg
Die Codekopie lautet wie folgt:
Dieser Wert wurde angegeben, wenn die Fun -Funktion ausgeführt wird. Es ist zu beachten, dass der angegebene Wert dieser Wert nicht unbedingt den realen Wert bedeutet, wenn die Funktion ausgeführt wird. Wenn sich diese Funktion im Nichtstreifenmodus befindet, verweist dieser als null und nicht definierte Wert automatisch auf das globale Objekt (das Fensterobjekt im Browser), und dieser Wert mit dem ursprünglichen Wert (Nummer, String, Boolean-Wert) verweist auf das automatische Verpackungsobjekt des ursprünglichen Wertes.
arg1, arg2, ...
Die Codekopie lautet wie folgt:
Angegebene Parameterliste.
call () Methode in JavaScript
Achten Sie nicht auf die obigen komplizierten Erklärungen, und beginnen Sie diesen Prozess Schritt für Schritt.
Beispiel für CALL () -Methode
Also schrieb ich noch eine Hallo, Welt:
Die Codekopie lautet wie folgt:
Funktion print (p1, p2) {
console.log (p1 + '' + p2);
}
print ("Hallo", "Welt");
print.call (undefiniert, "Hallo", "Welt");
Die beiden Methoden haben jedoch die gleiche Ausgabe, dagegen fließt jedoch auch die Anrufmethode ein undefinierter.
Schauen wir uns als nächstes ein anderes Beispiel an.
Die Codekopie lautet wie folgt:
var obj = function () {};
Funktion print (p1, p2) {
console.log (p1 + '' + p2);
}
print.call (obj, "Hallo", "Welt");
Aber hier ist das, was wir eingegangen sind, immer noch undefinierter, da das undefinierte im vorherigen Beispiel darauf zurückzuführen ist, dass ein Parameter übergeben werden muss. Es gibt keine wirkliche Reflexion der Verwendung von Anruf hier, sehen Sie sich ein besseres Beispiel an.
Die Codekopie lautet wie folgt:
Funktion print (name) {
console.log (this.p1 + '' + this.p2);
}
var h = {p1: "hello", p2: "world", drucken: drucken};
H.Print ("fd");
var h2 = {p1: "hello", p2: "welt"};
print.call (H2, "nichts");
Call wird aufgerufen, indem sie die Methoden und Objekte anderer Menschen ausleihen, genau wie Sie Ihre eigenen anrufen. In H.Print zeigt dies, wenn eine Funktion als Methode aufgerufen wird, auf das zugehörige Objekt. In diesem Beispiel haben wir jedoch nicht verstanden, ob H2 Print oder Print H2 genannt wurde. Also zitierte ich das Beispiel von Mozilla
Die Codekopie lautet wie folgt:
Funktionsprodukt (Name, Preis) {
this.name = name;
this.price = Preis;
if (Preis <0)
Wurf RangeError ('Produkt kann nicht erstellen "' + name + '" mit einem negativen Preis');
gib dies zurück;
}
Funktion Food (Name, Preis) {
Product.call (this, Name, Preis);
this.category = 'food';
}
Food.Prototype = new Product ();
Var Käse = neues Essen ('Feta', 5);
console.log (käse);
Hier können wir wirklich verstehen, welches Objekt welche Methode aufruft. Im Beispiel werden Objektinstanzen, die mit dem Nahrungsmittelkonstruktor erstellt wurden, den Namen und die Preisattribute im Produktkonstruktor hinzugefügt, das Kategorieattribut ist jedoch im jeweiligen Konstruktor definiert.
Die Codekopie lautet wie folgt:
Funktion print (name) {
console.log (this.p1 + '' + this.p2);
}
var h2 = function (no) {
this.p1 = "Hallo";
this.p2 = "World";
print.call (this, "nichts");
};
H2 ();
Hier wird H2 als Empfänger verwendet, um den Funktionsdruck aufzurufen. Wie beim Beispiel für Lebensmittel können Sie in einem Kinderkonstruktor die Erbschaft implementieren, indem Sie die Anrufmethode des übergeordneten Konstruktors aufrufen.
Was die Vorteile der Call -Methode betrifft, wird es in "effektivem JavaScript" eingeführt.
1. Verwenden Sie die Anrufmethode, um den Empfänger so anzupassen, dass die Funktion aufgerufen wird.
2. Verwenden Sie die Anrufmethode, um eine Methode aufzurufen, die im angegebenen Objekt nicht vorhanden ist.
3.. Verwenden Sie die Anrufmethode, um Funktionen höherer Ordnung zu definieren, mit denen Benutzer Empfänger für Rückruffunktionen angeben können.