Heim >Web-Frontend >js-Tutorial >Einführung in die call()-Methode in Javascript_Javascript-Kenntnissen

Einführung in die call()-Methode in Javascript_Javascript-Kenntnissen

WBOY
WBOYOriginal
2016-05-16 16:09:231231Durchsuche

Die Einführung zu call() auf der offiziellen Website von Mozilla lautet:

Code kopieren Der Code lautet wie folgt:

Die call()-Methode ruft eine Funktion oder Methode unter Verwendung eines angegebenen Werts und mehrerer angegebener Parameterwerte auf.

Call()-Syntax
Code kopieren Der Code lautet wie folgt:

fun.call(thisArg[, arg1[, arg2[, ...]]])

Call()-Parameter

thisArg

Code kopieren Der Code lautet wie folgt:

Der angegebene Wert, wenn die Fun-Funktion ausgeführt wird. Es ist zu beachten, dass der angegebene this-Wert nicht unbedingt der tatsächliche this-Wert ist, wenn die Funktion ausgeführt wird. Wenn sich die Funktion im nicht-strikten Modus befindet, zeigt der als null und undefiniert angegebene this-Wert automatisch auf das globale Objekt (im). Browser, es ist ein Fensterobjekt), und dieses, dessen Wert ein Grundwert (Zahl, Zeichenfolge, boolescher Wert) ist, zeigt auf das automatische Umbruchobjekt des Grundwerts.

arg1, arg2, ...
Code kopieren Der Code lautet wie folgt:

Die angegebene Parameterliste.

Die call()-Methode in Javascript

Achten Sie nicht auf die komplizierten Erklärungen oben und beginnen Sie den Prozess Schritt für Schritt.

Instanz der Call()-Methode

Also habe ich noch ein „Hello, World“ geschrieben:

Code kopieren Der Code lautet wie folgt:

Funktion print(p1, p2) {
console.log( p1 ' ' p2);
}
print("Hallo", "Welt");
print.call(undefiniert, „Hallo“, „Welt“);

Beide Methoden haben die gleiche Ausgabe, im Gegensatz dazu übergibt die Methode call jedoch auch undefiniert.

Als nächstes schauen wir uns ein weiteres Beispiel an.

Code kopieren Der Code lautet wie folgt:

var obj=function(){};
Funktion print(p1, p2) {
console.log( p1 ' ' p2);
}

print.call(obj, „Hallo“, „Welt“);

Nur ​​hier ist das, was wir übergeben, noch undefiniert, da das Undefinierte im vorherigen Beispiel darauf zurückzuführen ist, dass ein Parameter übergeben werden muss. Dies spiegelt nicht wirklich die Verwendung von call wider. Schauen wir uns ein besseres Beispiel an.

Code kopieren Der Code lautet wie folgt:

Funktion print(name) {
console.log( this.p1 ' ' this.p2);
}

var h={p1:"hello", p2:"world", print:print};
h.print("fd");

var h2={p1:"hello", p2:"world"};
print.call(h2, "nothing");

Aufrufen bedeutet, die Methoden und Objekte anderer Leute auszuleihen, um sie aufzurufen, genau wie das eigene Aufrufen. Wenn in h.print die Funktion als Methode aufgerufen wird, zeigt diese auf das entsprechende Objekt. Es ist nur so, dass wir in diesem Beispiel nicht verstanden haben, ob h2 print oder print h2 heißt. Deshalb habe ich Mozillas Beispiel zitiert

Code kopieren Der Code lautet wie folgt:

Funktion Produkt(Name, Preis) {
This.name = name;
This.price = Preis;

wenn (Preis < 0)
          throw RangeError('Produkt „‘name‘“ mit negativem Preis kann nicht erstellt werden‘);
Geben Sie dies zurück;
}

Funktion Essen(Name, Preis) {
Product.call(this, name, price);
This.category = 'food';
}
Food.prototype = neues Produkt();

var-Käse = neues Lebensmittel('feta', 5);
console.log(cheese);


Hier können wir wirklich sehen, welches Objekt welche Methode aufgerufen hat. Im Beispiel werden den mit dem Food-Konstruktor erstellten Objektinstanzen die Namens- und Preisattribute im Product-Konstruktor hinzugefügt, die Kategorieattribute werden jedoch in ihren jeweiligen Konstruktoren definiert.

Code kopieren Der Code 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, „nothing“);
};
h2();

h2 fungiert hier als Empfänger zum Aufrufen der Funktion print. Wie im Food-Beispiel können Sie innerhalb eines untergeordneten Konstruktors die Vererbung implementieren, indem Sie die Aufrufmethode des übergeordneten Konstruktors aufrufen.

Die Vorteile der Call-Methode werden in „Effektives JavaScript“ vorgestellt.

1. Verwenden Sie die Aufrufmethode, um den Empfänger so anzupassen, dass er die Funktion aufruft.
2. Verwenden Sie die Aufrufmethode, um Methoden aufzurufen, die im angegebenen Objekt nicht vorhanden sind.
3. Verwenden Sie die Call-Methode, um Funktionen höherer Ordnung zu definieren, die es Benutzern ermöglichen, Empfänger für die Callback-Funktion anzugeben.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn