Heim >Web-Frontend >js-Tutorial >Warum ist JavaScript bind() für die Steuerung „dieses' in Funktionen unerlässlich?
Warum ist JavaScript bind() notwendig?
In JavaScript bezieht sich „this“ auf das Objekt, das den auszuführenden Code besitzt. Wenn Funktionen jedoch als Callbacks oder Event-Handler übergeben werden, kann die aufrufende Umgebung von der vorgesehenen abweichen. Dies führt zu dem Problem, dass sich „dies“ auf das globale Objekt und nicht auf das beabsichtigte Objekt bezieht.
Lösung des Problems mit Bind
Die bind()-Methode von JavaScript ermöglicht es Ihnen um den Wert von „this“ innerhalb einer Funktion explizit festzulegen. Indem Sie eine Funktion an ein bestimmtes Objekt binden, stellen Sie sicher, dass sich „this“ beim Aufruf der Funktion auf dieses Objekt bezieht.
Beispiel:
<code class="js">var myName = { name: "Tom", getName: function() { return this.name; } }; var storeMyName2 = myName.getName.bind(myName); console.log(storeMyName2()); // Output: "Tom" (correct)</code>
Durch die Bindung von getName() an myName bleibt der Verweis auf „this“ erhalten und die Funktion gibt korrekt „Tom“ zurück.
Alternative Lösung: Beispiel 3
In Beispiel 3: „storeMyName3“ wird das Ergebnis des sofortigen Aufrufs von „myName.getName()“ zugewiesen. Das bedeutet, dass der Wert von storeMyName3 eine Zeichenfolge und keine Funktion ist. Daher gibt es kein Problem mit dem Wert von „this“, da der Wert zum Zeitpunkt der Ausführung bestimmt wird, nicht beim Aufruf der Funktion.
Vergleich von Bind() und Beispiel 3
Bind() und Beispiel 3 erreichen das gleiche Ziel, jedoch durch unterschiedliche Mechanismen. Mit Bind() können Sie den Kontext einer Funktion festlegen, ohne sie sofort aufzurufen, während Beispiel 3 den Kontext durch Aufrufen der Funktion und Speichern des Ergebnisses festlegt.
Das obige ist der detaillierte Inhalt vonWarum ist JavaScript bind() für die Steuerung „dieses' in Funktionen unerlässlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!