Heim >Web-Frontend >js-Tutorial >Wann und warum ist JavaScript bind() notwendig?

Wann und warum ist JavaScript bind() notwendig?

Linda Hamilton
Linda HamiltonOriginal
2024-10-24 16:54:021053Durchsuche

When and Why is JavaScript bind() Necessary?

Warum ist JavaScript bind() notwendig?

Die Kontextbindung von JavaScript verstehen

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.

Die Notwendigkeit von Bind()

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 und Bindung vs. Aufruf

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.

Hauptunterschiede

Approach Time of Invocation Time of this Binding
Function Object Future Future
Function Call Now Now
f.bind() Future Now

Fazit

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!

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