Heim >Web-Frontend >js-Tutorial >„this' vs. direkte Objektreferenz in JavaScript: Welcher Ansatz ist für verschachtelte Funktionen sicherer?

„this' vs. direkte Objektreferenz in JavaScript: Welcher Ansatz ist für verschachtelte Funktionen sicherer?

Susan Sarandon
Susan SarandonOriginal
2024-11-28 00:58:11728Durchsuche

`this` vs. Direct Object Reference in JavaScript:  Which Approach Is Safer for Nested Functions?

Objektliteralreferenz in der Funktion des eigenen Schlüssels: Implikationen bewerten

In JavaScript ist es üblich, Funktionen in Objektliteralen einzuschließen, was eine praktische Funktion bietet Möglichkeit, Daten und Verhalten zu kapseln. Beim Zugriff auf Objekteigenschaften innerhalb dieser Funktionen entsteht jedoch ein Dilemma: Sollte man dies verwenden oder direkt auf das Objektliteral verweisen?

Verwendung dieser vs. direkter Objektreferenz

Die Das erste Beispiel in der Problembeschreibung verwendet dies, um auf das Objektliteral zu verweisen:

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

Das zweite Beispiel umgeht dies jedoch und verweist direkt das Objekt:

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

Potenzielle Fallstricke beider Ansätze

Beide Ansätze können Probleme aufwerfen:

  • diese Referenz: Wenn dies nicht als Methode des Objekts (obj.key2()) aufgerufen wird, kann dies auf etwas anderes verweisen, beispielsweise auf das Globale Objekt.
  • Direkte Objektreferenz: Wenn das Objekt während der Ausführung der Funktion neu zugewiesen wird, greift die Funktion möglicherweise auf einen falschen Wert zu.

Die Fallstricke angehen

Um diese Fallstricke zu umgehen, gibt es mehrere Möglichkeiten exist:

  • ES6 Const: Verwenden Sie const, um eine Neuzuweisung des Objekts zu verhindern.
  • Closure: Speichern Sie das Objekt in einem lokalen Bereichsabschluss .
  • bind(): Binden Sie die Funktion an das Objekt, um sicherzustellen, dass sie immer funktioniert verweist auf das richtige Objekt.

Sichere Implementierung

Der folgende Code demonstriert eine sichere Implementierung mithilfe eines Abschlusses:

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

Das obige ist der detaillierte Inhalt von„this' vs. direkte Objektreferenz in JavaScript: Welcher Ansatz ist für verschachtelte Funktionen sicherer?. 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