Wie kann ich einen Standard-Getter für einen Prototyp angeben?
Mit Standard-Getter meine ich eine Funktion, die aufgerufen wird, wenn obj.undefinedProperty123
aufgerufen wird.
Ich habe versucht, Object.prototype.get = function (property) {..}, aber dies wird in diesem Fall nicht aufgerufen.
Was Gareth sagte, außer dass es __noSuchMethod__
ist.
Oder haben Sie vielleicht an PHP gedacht?
Hier ist ein sehr guter Artikel über die kürzlich standardisierten Eigenschaften-Getter / Setter, die einige frühere Nicht-Standard-Inkarnationen hervorheben.
Zusammenfassung: Es gibt (noch) keinen standardmäßigen 'Catch-All' Getter / Setter, aber Object.defineProperty ist die Zukunft.
In ECMAScript 5 können Sie get / set-Vorgänge nur für bestimmte benannte Eigenschaften (nicht allgemein für alle Eigenschaften) über Object.defineProperty
:
Hier wird die Funktion get
jeden Zeitcode ausführen, der versucht, someObj.someProp
zu lesen.
Im kommenden ECMAScript 6-Entwurf wird dies über Proxies . Ein Proxy hat ein zugrunde liegendes Zielobjekt und setzt / erhält Funktionen. Immer wenn eine set- oder get-Operation auf einer der Eigenschaften eines Proxys ausgeführt wird, wird die entsprechende Funktion ausgeführt, wobei das Zielobjekt des Proxys, der verwendete Eigenschaftsname und der in set
versuchte Wert als Argumente verwendet werden.
Hier wird die Einstellung zum Abrufen von Eigenschaftswerten auf prox
dazu führen, dass die Funktionen set
/ get
ausgeführt werden.
Firefox ist es mit Nicht-Standard-noSuchMethod möglich: -
%Vor%Tags und Links javascript ecmascript-5 getter prototype