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
Freigeben: 2024-11-28 00:58:11
Original
743 Leute haben es durchsucht

`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());
Nach dem Login kopieren

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

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

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;
})();
Nach dem Login kopieren

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!

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