Heim > Web-Frontend > js-Tutorial > Hauptteil

Warum ist die Bind()-Methode in JavaScript unerlässlich?

Mary-Kate Olsen
Freigeben: 2024-10-24 12:14:02
Original
807 Leute haben es durchsucht

Why is Bind() Method Essential in JavaScript?

Warum ist JavaScript bind() notwendig?

Problem und Lösung

In JavaScript Das Schlüsselwort this bezieht sich auf das Objekt, für das eine Funktion aufgerufen wird. Wenn jedoch eine Funktion einer Variablen zugewiesen und dann indirekt aufgerufen wird, kann dieser Wert unvorhersehbar sein. Dies kann zu Fehlern wie „Dies ist undefiniert“ oder „Dies ist das globale Objekt“ führen.

Um dieses Problem zu beheben, stellt JavaScript die Methode bind() bereit. Durch den Aufruf von bind(object) können Sie diesen Wert explizit für die Funktion festlegen, auch wenn sie später aufgerufen wird. Dadurch wird verhindert, dass sich dieser Wert unerwartet ändert.

Warum das Problem auftritt

Wie bereits erläutert, wird der Wert von this durch den Aufrufkontext bestimmt. Wenn eine Funktion direkt aufgerufen wird, ist dieser Wert einfach das Objekt, für das sie aufgerufen wird. Wenn eine Funktion jedoch einer Variablen zugewiesen wird, verliert sie ihren ursprünglichen Aufrufkontext.

Beispiel 1

<code class="js">this.name = "John";

var myName = {
  name: "Tom",
  getName: function() {
    return this.name
  }
}

var storeMyName = myName.getName;</code>
Nach dem Login kopieren

In Beispiel 1 ist „storeMyName“ eine Referenz auf die getName-Funktion. Wenn storeMyName aufgerufen wird, verliert es seinen ursprünglichen Kontext innerhalb des myName-Objekts. Daher bezieht sich dieser Insider „storeMyName“ auf das globale Objekt, nicht auf das myName-Objekt.

Lösung (bind)

<code class="js">var storeMyName2 = myName.getName.bind(myName);</code>
Nach dem Login kopieren

In Beispiel 2 wird bind() verwendet um diesen Wert für getName explizit auf das myName-Objekt zu setzen. Dadurch wird sichergestellt, dass beim Aufruf von storeMyName2 auf das myName-Objekt und nicht auf das globale Objekt verwiesen wird.

Warum Beispiel 3 das Problem löst

<code class="js">var storeMyName3 = myName.getName();</code>
Nach dem Login kopieren

Beispiel 3 unterscheidet sich von den anderen dadurch, dass es einer Variablen keine Funktion zuweist. Stattdessen ruft es myName.getName() direkt auf und speichert das Ergebnis in storeMyName3. Das bedeutet, dass „storeMyName3“ keine Funktion ist, sondern der von der Funktion „getName“ zurückgegebene Wert. Daher muss man sich um diesen Wert keine Sorgen machen.

Das obige ist der detaillierte Inhalt vonWarum ist die Bind()-Methode in JavaScript unerlässlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!