Heim >Web-Frontend >js-Tutorial >Wie funktioniert „dies' in JavaScript-Funktionsaufrufen und -Rückrufen?

Wie funktioniert „dies' in JavaScript-Funktionsaufrufen und -Rückrufen?

DDD
DDDOriginal
2024-11-03 15:42:30370Durchsuche

How Does `this` Work in JavaScript Function Calls and Callbacks?

Wenn diese Zeiger in JavaScript gesetzt werden

Verstehen dieser Zeiger in Funktionsaufrufen

In JavaScript wird jeder Funktionsaufruf festgelegt ein neuer Wert dafür. Der diesem zugewiesene Wert wird durch die Methode bestimmt, die zum Aufrufen der Funktion verwendet wird.

Hauptmethoden zum Festlegen dieses Zeigers

Es gibt hauptsächlich sechs Möglichkeiten, diesen Zeiger festzulegen in JavaScript:

  • Normaler Funktionsaufruf: Standardmäßig das globale Objekt (z. B. Fenster) oder undefiniert (im strikten Modus).
  • Methodenaufruf: Zeigt auf das Objekt, das die Methode besitzt.
  • **.apply() oder .call(): Legt fest Dies entsprechend dem übergebenen Argument.
  • Mit new: Erstellt ein neues Objekt und setzt dieses auf it.
  • **.bind(): Gibt eine neue Funktion mit einem benutzerdefinierten this-Wert zurück, wobei .apply() intern verwendet wird.
  • ES6 Fat Arrow-Funktionen: Bindet der aktuelle lexikalische Wert (kann nicht überschrieben werden).

Dies im Rückruf Funktionen

Rückruffunktionen sind keine eindeutige Möglichkeit, dies festzulegen. Die aufrufende Funktion ermittelt diesen Wert, wenn sie den Rückruf aufruft.

Beispielanalyse

In Ihrem Codeausschnitt:

<code class="javascript">var randomFunction = function(callback) {
  var data = 10;
  callback(data);
};

var obj = {
  initialData: 20,
  sumData: function(data) {
    var sum = this.initialData + data;
    console.log(sum);
  },
  prepareRandomFunction: function() {
    randomFunction(this.sumData.bind(this));
  }
};

obj.prepareRandomFunction();</code>
  • obj.prepareRandomFunction() verwendet einen Methodenaufruf und setzt diesen auf obj.
  • randomFunction(this.sumData.bind(this)) verwendet .bind(), das den aktuellen this-Wert (d. h. obj) an die zurückgegebene Callback-Funktion bindet.

Wenn randomFunction den Rückruf aufruft, wird dieser daher aufgrund der Verwendung von .bind() in auf obj gesetzt this.sumData.bind(this).

Das obige ist der detaillierte Inhalt vonWie funktioniert „dies' in JavaScript-Funktionsaufrufen und -Rückrufen?. 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