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

js
__defineGetter__(prop, func)

Parameter

prop

Ein String, der den Namen der Eigenschaft enthält, an die der Getter func gebunden ist.

func

Eine Funktion, die an den Zugriff auf die angegebene Eigenschaft gebunden ist.

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__()

js
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.

js
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.

js
const o = {};
Object.defineProperty(o, "gimmeFive", {
  get() {
    return 5;
  },
  configurable: true,
  enumerable: true,
});
console.log(o.gimmeFive); // 5

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-object.prototype.__defineGetter__

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
__defineGetter__
Deprecated

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Deprecated. Not for use in new websites.
See implementation notes.

Siehe auch