Heim >Web-Frontend >js-Tutorial >Wann und warum ist JavaScript bind() notwendig?
In JavaScript wird der Wert davon durch den Aufrufkontext der Funktion bestimmt . Dieser Kontext ist jedoch möglicherweise nicht immer erwünscht, wenn Rückruffunktionen oder Ereignishandler verwendet werden.
Betrachten Sie das folgende Beispiel:
<code class="javascript">this.name = "John"; var myName = { name: "Tom", getName: function() { return this.name; } }; var storeMyName = myName.getName; // example 1 var storeMyName2 = myName.getName.bind(myName); // example 2 var storeMyName3 = myName.getName(); // example 3</code>
Der Aufruf von „storeMyName()“ in Beispiel 1 weist dies dem globalen Bereich zu , was wie erwartet zu „John“ anstelle von „Tom“ führt.
Beim Delegieren von Funktionsausführungen an anderen Code kann dieser Verweis unvorhersehbar werden. Mit bind() können Sie diesen Wert manuell festlegen, bevor Sie die Funktion aufrufen.
In Beispiel 2 stellt der Aufruf von storeMyName2() mit bind(myName) sicher, dass dieser Wert auf das myName-Objekt festgelegt wird, wodurch das Problem gelöst wird in Beispiel 1.
Beispiel 3 verwendet myName.getName() ohne Bindung, gibt aber dennoch den korrekten Wert zurück, da dieser entsprechend festgelegt wird, wenn getName() Funktion wird ausgeführt. Dies steht im Gegensatz zu Beispiel 1/2, wo die Funktionen gespeichert werden, ohne ausgeführt zu werden.
Approach | Time of Invocation | Time of this Binding |
---|---|---|
Function Object | Future | Future |
Function Call | Now | Now |
f.bind() | Future | Now |
bind() ist in JavaScript unerlässlich, wenn Sie müssen den Wert this einer Funktion steuern, die in einem anderen Kontext ausgeführt wird. Durch die Verwendung von bind() können Sie unerwartetes Verhalten verhindern und sicherstellen, dass diese Referenz wie gewünscht festgelegt wird.
Das obige ist der detaillierte Inhalt vonWann und warum ist JavaScript bind() notwendig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!