Heim > Web-Frontend > js-Tutorial > Wie steuert die JavaScript-Methode „bind()' das Schlüsselwort „this'?

Wie steuert die JavaScript-Methode „bind()' das Schlüsselwort „this'?

Barbara Streisand
Freigeben: 2025-01-01 05:40:11
Original
418 Leute haben es durchsucht

How Does JavaScript's `bind()` Method Control the `this` Keyword?

Grundlegendes zur JavaScript-Methode bind()

Mit der Methode bind() von JavaScript können Sie eine neue Funktion erstellen, indem Sie den Wert des Schlüsselworts this innerhalb dieser Funktion explizit festlegen. So funktioniert es:

Zweck von bind()

bind() gibt eine neue Funktion zurück, die das Schlüsselwort this an ein bestimmtes Objekt bindet, das als erstes Argument angegeben ist. Dadurch wird sichergestellt, dass sich das Schlüsselwort this beim Aufruf der gebundenen Funktion immer auf das angegebene Objekt bezieht, unabhängig davon, wie es aufgerufen wird.

Beispielverwendung

Bedenken Sie den folgenden Code:

var myButton = {
  content: 'OK',
  click() {
    console.log(this.content + ' clicked');
  }
};

myButton.click();
var looseClick = myButton.click;
looseClick(); // not bound, 'this' is not myButton - it is the globalThis
var boundClick = myButton.click.bind(myButton);
boundClick(); // bound, 'this' is myButton
Nach dem Login kopieren

In diesem Beispiel haben wir eine click()-Methode in einem myButton-Objekt definiert. Wenn click() direkt für das Objekt aufgerufen wird, wird korrekt „OK geklickt“ ausgegeben, da sich dies auf das myButton-Objekt bezieht. Wenn wir jedoch click() der LooseClick-Variablen zuweisen, bei der es sich im Wesentlichen um eine kostenlose Funktion handelt, verweist das Schlüsselwort this nicht mehr auf myButton und verwendet standardmäßig den globalen Kontext.

Um sicherzustellen, dass das Schlüsselwort this gebunden bleibt myButton, wir verwenden bind(). DieboundClick-Variable wird erstellt, indem das myButton-Objekt mithilfe von bind(myButton) an die click()-Methode gebunden wird. Wenn „boundClick()“ aufgerufen wird, wird das Schlüsselwort „this“ korrekt an „myButton“ gebunden, wodurch das gewünschte Verhalten sichergestellt wird.

Zusätzliche Argumente binden

Sie können nach dem Objekt „this“ auch zusätzliche Argumente an bind() übergeben . Diese Argumente werden vorab an die neue Funktion gebunden, sodass Sie problemlos teilweise angewendete Funktionen erstellen können. Zum Beispiel:

var sum = function(a, b) {
  return a + b;
};

var add5 = sum.bind(null, 5);
console.log(add5(10)); // prints 15
Nach dem Login kopieren

In diesem Beispiel binden wir die Funktion sum() an null (was bedeutet, dass es keinen Anfangswert für diesen Wert gibt) und übergeben 5 als erstes Argument. Die resultierende add5()-Funktion kann dann mit einem einzigen Argument (anstelle der üblichen zwei) aufgerufen werden und fügt diesem Argument immer 5 hinzu.

Fazit

Die bind()-Methode ist ein leistungsstarkes Tool in JavaScript zur expliziten Steuerung des Schlüsselworts this. Damit können Sie auf einfache Weise gebundene Funktionen erstellen, die den richtigen Kontext beibehalten, wenn sie unabhängig aufgerufen werden. Obwohl es mit dem Aufkommen der Pfeilfunktionen möglicherweise nicht mehr so ​​häufig verwendet wird, bleibt bind() ein wertvolles Werkzeug für bestimmte Szenarien, in denen die Kontrolle des Schlüsselworts this von entscheidender Bedeutung ist.

Das obige ist der detaillierte Inhalt vonWie steuert die JavaScript-Methode „bind()' das Schlüsselwort „this'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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