Object.prototype.__defineGetter__()
Veraltet: Diese Funktion wird nicht mehr empfohlen. Obwohl einige Browser sie möglicherweise noch unterstützen, könnte sie bereits aus den relevanten Webstandards entfernt worden sein, in Kürze entfernt werden oder nur noch aus Kompatibilitätsgründen bestehen. Vermeiden Sie die Verwendung und aktualisieren Sie vorhandenen Code, falls möglich; siehe die Kompatibilitätstabelle am Ende dieser Seite, um Ihre Entscheidung zu unterstützen. Beachten Sie, dass diese Funktion jederzeit aufhören könnte zu funktionieren.
Hinweis:
Dieses Feature ist zugunsten der Definition von gettern mit der Objekt-Initialisierer-Syntax oder der Object.defineProperty()
-API veraltet. Das Verhalten dieser Methode ist nur für die 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
func
keine Funktion ist.
Beschreibung
Alle Objekte, die von Object.prototype
erben (d. h. alle außer null-Prototype-Objekte), erben die __defineGetter__()
-Methode. Diese Methode ermöglicht es, einen Getter an 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 wird es von allen großen Browsern implementiert 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
Definition 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 an einem Objekt zu definieren, nachdem es erstellt wurde. Im Vergleich zu __defineGetter__()
ermöglicht diese Methode Ihnen, die Aufzählbarkeit und Konfigurierbarkeit des Getters zu steuern sowie Symbol-Eigenschaften zu definieren. Die Object.defineProperty()
-Methode funktioniert auch mit null-Prototype-Objekten, die nicht von Object.prototype
erben und daher nicht die __defineGetter__()
-Methode haben.
const o = {};
Object.defineProperty(o, "gimmeFive", {
get() {
return 5;
},
configurable: true,
enumerable: true,
});
console.log(o.gimmeFive); // 5
Spezifikationen
Specification |
---|
ECMAScript Language Specification # sec-object.prototype.__defineGetter__ |
Browser-Kompatibilität
BCD tables only load in the browser