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: Diese Funktion ist zugunsten der Definition von getters mithilfe der Objekt-Initialisierungs-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. Sie funktioniert möglicherweise nicht überall.

Die __defineGetter__()-Methode von Object-Instanzen bindet die Eigenschaft eines Objekts an eine Funktion, die aufgerufen wird, wenn diese Eigenschaft abgefragt 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 mit der Abfrage der angegebenen Eigenschaft verknüpft wird.

Rückgabewert

Keiner (undefined).

Ausnahmen

TypeError

Wird ausgelöst, wenn func keine 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 vorhandenen Objekt zu definieren. Dies entspricht dem Befehl 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__() wird in der Spezifikation als "normativ optional" definiert, was bedeutet, dass keine Implementierung erforderlich ist. Allerdings implementieren alle großen Browser diese Funktion, und aufgrund ihrer fortgesetzten Verwendung ist es unwahrscheinlich, dass sie 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

Definieren einer Getter-Eigenschaft auf standardmäßige Weise

Sie können die get-Syntax verwenden, um einen Getter zu definieren, wenn das Objekt zunächst initialisiert wird.

js
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 Ihnen diese Methode die Steuerung der Aufzählbarkeit und Konfigurierbarkeit des Getters sowie die Definition von Symbol-Eigenschaften. Die Object.defineProperty()-Methode funktioniert auch mit null-Prototyp-Objekten, die nicht von Object.prototype erben und daher nicht über die __defineGetter__()-Methode verfügen.

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

Spezifikationen

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

Browser-Kompatibilität

Siehe auch