Heim >Web-Frontend >js-Tutorial >Detaillierte Erläuterung der Verwendung von Funktionsaufrufmethodeninstanzen in Javascript
Function.prototype.call()
Die Aufrufmethode einer Funktionsinstanz kann den Zeiger davon innerhalb der Funktion angeben (d. h. den Bereich, in dem die Funktion wird ausgeführt), Rufen Sie dann die Funktion im angegebenen Bereich auf. Und die Funktion wird sofort ausgeführt.
Schauen Sie sich ein Beispiel an, um diese Passage zu verstehen.
var keith = { rascal: 123 }; var rascal = 456; function a() { console.log(this.rascal); } a(); //456 a.call(); //456 a.call(null); //456 a.call(undefined); //456 a.call(this); //456 a.call(keith); //123
Wenn im obigen Code das Schlüsselwort this in der a-Funktion auf das globale Objekt zeigt, ist das Rückgabeergebnis 456. Es ist ersichtlich, dass, wenn die Aufrufmethode keine Parameter hat oder die Parameter null oder undefiniert sind oder dies der Fall ist, dies einem Verweis auf das globale Objekt entspricht. Wenn Sie die Aufrufmethode verwenden, um das Schlüsselwort this auf das Keith-Objekt zu verweisen, d. h. der Bereich, in dem die Funktion ausgeführt wird, das Keith-Objekt ist, ist das Rückgabeergebnis 123.
Die Methode call() kann zwei Parameter übergeben. Der erste Parameter gibt den Zeiger innerhalb der Funktion an (dh den Bereich, in dem die Funktion ausgeführt wird), und der zweite Parameter ist der Parameter, der beim Aufruf der Funktion übergeben werden muss.
function keith(a, b) { console.log(a + b); } keith.call(null, 1, 2); //3
Der erste Parameter ist erforderlich und kann null, undefiniert oder this sein, darf aber nicht leer sein. Auf null (undefiniert) gesetzt bedeutet dies, dass sich die Funktion keith zu diesem Zeitpunkt im globalen Gültigkeitsbereich befindet. Der zweite Parameter muss einzeln hinzugefügt werden. Bei der Anwendung muss es in Form eines Arrays hinzugefügt werden.
Eine Anwendung der Aufrufmethode besteht darin, die native Methode des Objekts aufzurufen. Kann auch verwendet werden, um Array-ähnliche Objekte in Arrays umzuwandeln.
var obj = {}; console.log(obj.hasOwnProperty('toString')); //false obj.hasOwnProperty = function() { return true; } console.log(obj.hasOwnProperty('toString')); //true console.log(Object.prototype.hasOwnProperty.call(obj, 'toString')); //false
Im obigen Code ist hasOwnProperty eine vom obj-Objekt geerbte Methode. Wenn diese Methode überschrieben wird, wird nicht das richtige Ergebnis erhalten. Die Aufrufmethode kann dieses Problem lösen. Sie fügt die ursprüngliche Definition der hasOwnProperty-Methode zur Ausführung auf das Objekt obj ein, sodass das Ergebnis unabhängig davon, ob es eine Methode mit demselben Namen auf obj gibt, nicht beeinträchtigt wird. Es ist zu beachten, dass hasOwnProperty eine Methode des nativen Objekts von Object.prototype ist und call eine von Function.prototype geerbte Methode ist.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung von Funktionsaufrufmethodeninstanzen in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!