Heim >Web-Frontend >js-Tutorial >„this' vs. „obj' in Objektliteralfunktionen: Wann sollte ich Which verwenden?

„this' vs. „obj' in Objektliteralfunktionen: Wann sollte ich Which verwenden?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-28 19:42:12998Durchsuche

`this` vs. `obj` in Object Literal Functions: When Should I Use Which?

Objektliteral-Referenz in der eigenen Funktion: Untersuchen von „this“ vs. „obj“

Beim Definieren einer Funktion innerhalb eines Objektliterals müssen Sie Möglicherweise stellt sich die Frage, ob das Objekt als „this“ referenziert oder direkt „obj“ verwendet werden soll. Auch wenn beide Ansätze scheinbar zum gleichen Ergebnis führen, sind mögliche Auswirkungen zu berücksichtigen.

Referenzierung von „this“ innerhalb einer Funktion

Verwendung von „this“ innerhalb der Funktion geht davon aus, dass die Funktion immer als Methode des Objekts aufgerufen wird. Dieser Ansatz kann zu Problemen führen, wenn die Funktion außerhalb des Objektkontexts aufgerufen wird. Zum Beispiel:

var obj = {
  key1: "it",
  key2: function() { return this.key1 + " works!"; }
};

var func = obj.key2;  // Assign function to a new reference
alert(func());        // Error: Reference lost outside of object context

Referenz auf „obj“ innerhalb einer Funktion

Direkte Referenzierung auf „obj“ innerhalb der Funktion löst das im vorherigen Beispiel aufgetretene Problem. Es bringt jedoch ein anderes Problem mit sich:

var obj = {
  key1: "it",
  key2: function() { return obj.key1 + " works!"; }
};

var newref = obj;
obj = { key1: "something else"; };

alert(newref.key2()); // Outputs "something else works"

Wenn in diesem Fall das durch „obj“ referenzierte Objekt geändert wird, verwendet die Funktion weiterhin die aktualisierten Objekteigenschaften. Dies kann zu unerwartetem Verhalten führen, insbesondere wenn die Objektreferenz während der Lebensdauer der Funktion geändert wird.

Auswahl des besten Ansatzes

Die Wahl zwischen der Referenzierung auf „dies“ und „obj“ hängt vom spezifischen Kontext und den potenziellen Risiken ab, die mit jedem Ansatz verbunden sind. Wenn die Funktion nur im Objektkontext verwendet werden soll, ist die Verwendung von „this“ möglicherweise vorzuziehen. Wenn die Funktion jedoch möglicherweise außerhalb des Objektkontexts verwendet wird oder das Risiko besteht, dass die Objektreferenz geändert wird, bietet die direkte Referenzierung von „obj“ einen sichereren Ansatz.

Gewährleistung der Objektintegrität

Für Szenarien, in denen die Wahrung der Objektintegrität von entscheidender Bedeutung ist, ziehen Sie die folgenden Optionen in Betracht:

  • ES6 Const: Durch die Verwendung des const-Schlüsselworts mit let innerhalb des Objekts wird sichergestellt, dass die Objektreferenz nicht neu zugewiesen werden kann.
  • Abschluss: Die Verwendung eines Abschlusses zum Eingrenzen der Objektreferenz innerhalb der Funktion bietet eine sichere und isolierte Umgebung.
  • Bindung: Durch das Binden der Funktion an das Objekt mithilfe von .bind() wird sichergestellt, dass die Funktion immer ausgeführt wird im richtigen Kontext.

Das obige ist der detaillierte Inhalt von„this' vs. „obj' in Objektliteralfunktionen: Wann sollte ich Which verwenden?. 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