Getter für ein Objekt definieren, so dass alle nicht definierten Eigenschaften-Lookups "" zurückgeben

9

Grundsätzlich muss ich das können:

%Vor%

Ich suche nach einem "globalen" Äquivalent von {}.__defineGetter__ oder {get} , um eine leere Zeichenfolge für alle undefinierten Eigenschaftengetter zurückzugeben (beachten Sie, dass Dies ist anders als eine Eigenschaft, die undefined ) ist.

    
David Murdoch 23.05.2012, 21:08
quelle

4 Antworten

8

Sie können eine Proxy erstellen, um bei einem Zugriff auf nicht definierte Eigenschaften eine leere Zeichenfolge zurückzugeben .

app.js :

%Vor%

Als Autor der Frage David Murdoch bemerkt, wenn Sie den Knoten v0.6.18 (die letzte stabile Version zum Zeitpunkt der Erstellung dieses Posts) verwenden, müssen Sie beim Ausführen des Skripts die Option --harmony_proxies übergeben:

%Vor%

Beachten Sie, dass diese Lösung nicht funktioniert, wenn Sie with verwenden, wie in:

%Vor%

with scheint nicht die Methode get des Proxys aufzurufen, wenn der Proxy der Bereichskette hinzugefügt wird.

Hinweis: Der Proxy-Handler wurde in diesem Beispiel an Proxy.create() übergeben und ist unvollständig . Weitere Informationen finden Sie unter Proxy: Häufige Fehler und Missverständnisse .

    
thisgeek 24.05.2012, 19:50
quelle
3

Es gibt keinen globalen fehlenden Memberhandler in Javascript. Sie müssen eine Funktion einführen, um das Verhalten zu abstrahieren

%Vor%     
JaredPar 23.05.2012 21:15
quelle
1

Mit ES6 und höher können Sie Proxy verwenden, wie die angenommene Antwort vorgeschlagen. Aber hier ist eine Antwort, wenn Sie mit ES5 stecken bleiben.

Mit ES5 müssen Sie Ihre eigene Klasse erstellen, wie in diesem kurzen Beispiel

%Vor%     
gotofritz 02.05.2016 10:27
quelle
0

Proxy.create scheint kein Ding mehr zu sein.

Hier ist ein neues Beispiel:

%Vor%

Sie können [ab] das verwenden, um lustige kleine Dinge wie das Erstellen von React-Helfern zu tun:

%Vor%     
mpen 29.03.2018 18:23
quelle

Tags und Links