Object.prototype.__defineGetter__()
Deprecated
Avoid using this feature in new projects. TC39 included accessor methods in Annex B of the ECMAScript specification, which covers JavaScript features with "one or more undesirable characteristics and in the absence of legacy usage would be removed." This feature may be a candidate for removal from web standards or browsers.>
Hinweis:
Dieses Feature ist veraltet zugunsten der Definition von getters mit der Objekt-Initialisierer-Syntax oder der Object.defineProperty() API. Das Verhalten dieser Methode ist nur aus Gründen der Web-Kompatibilität spezifiziert und muss auf keiner Plattform implementiert werden. Es funktioniert möglicherweise nicht überall.
Die __defineGetter__() Methode von Object Instanzen bindet eine Eigenschaft eines Objekts an eine Funktion, die aufgerufen wird, wenn auf diese Eigenschaft zugegriffen wird.
Syntax
__defineGetter__(prop, func)
Parameter
Rückgabewert
Keiner (undefined).
Ausnahmen
TypeError-
Wird ausgelöst, wenn
funckeine Funktion ist.
Beschreibung
Alle Objekte, die von Object.prototype erben (das heißt alle außer null-Prototyp Objekten), erben die Methode __defineGetter__(). Diese Methode ermöglicht es, einen Getter auf einem bereits existierenden Objekt zu definieren. Dies entspricht Object.defineProperty(obj, prop, { get: func, configurable: true, enumerable: true }), was bedeutet, dass die Eigenschaft aufzählbar und konfigurierbar ist und ein vorhandener Setter, falls vorhanden, erhalten bleibt.
__defineGetter__() ist in der Spezifikation als "normativ optional" definiert, was bedeutet, dass keine Implementierung verpflichtet ist, dies zu implementieren. Allerdings implementieren alle großen Browser dies, und aufgrund der fortgesetzten Nutzung ist es unwahrscheinlich, dass es entfernt wird. Wenn ein Browser __defineGetter__() implementiert, muss er auch die Methoden __lookupGetter__(), __lookupSetter__() und __defineSetter__() implementieren.
Beispiele
>Verwendung von __defineGetter__()
const o = {};
o.__defineGetter__("gimmeFive", function () {
return 5;
});
console.log(o.gimmeFive); // 5
Definieren einer Getter-Eigenschaft auf standardmäßige Weise
Sie können die get Syntax verwenden, um einen Getter zu definieren, wenn das Objekt zuerst initialisiert wird.
const o = {
get gimmeFive() {
return 5;
},
};
console.log(o.gimmeFive); // 5
Sie können auch Object.defineProperty() verwenden, um einen Getter auf einem Objekt zu definieren, nachdem es erstellt wurde. Im Vergleich zu __defineGetter__() ermöglicht diese Methode, die Aufzählbarkeit und Konfigurierbarkeit des Getters zu steuern sowie Symbol Eigenschaften zu definieren. Die Methode Object.defineProperty() funktioniert auch mit null-Prototyp Objekten, die nicht von Object.prototype erben und daher die Methode __defineGetter__() nicht haben.
const o = {};
Object.defineProperty(o, "gimmeFive", {
get() {
return 5;
},
configurable: true,
enumerable: true,
});
console.log(o.gimmeFive); // 5
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-object.prototype.__defineGetter__> |