Object.prototype.__lookupGetter__()

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 Object.getOwnPropertyDescriptor() API veraltet. Das Verhalten dieser Methode ist nur für die Web-Kompatibilität festgelegt und muss nicht auf allen Plattformen implementiert sein. Sie könnte nicht überall funktionieren.

Die Methode __lookupGetter__() von Object-Instanzen gibt die Funktion zurück, die als Getter an die angegebene Eigenschaft gebunden ist.

Syntax

js
__lookupGetter__(prop)

Parameter

prop

Ein String, der den Namen der Eigenschaft enthält, deren Getter zurückgegeben werden soll.

Rückgabewert

Die Funktion, die als Getter an die angegebene Eigenschaft gebunden ist. Gibt undefined zurück, wenn keine solche Eigenschaft gefunden wird oder die Eigenschaft ein Daten-Property ist.

Beschreibung

Alle Objekte, die von Object.prototype erben (d.h. alle außer null-Prototyp Objekte), erben die Methode __lookupGetter__(). Wenn ein Getter für eine Eigenschaft eines Objekts definiert wurde, ist es nicht möglich, über diese Eigenschaft auf die Getter-Funktion zuzugreifen, da sich diese Eigenschaft auf den Rückgabewert der Funktion bezieht. __lookupGetter__() kann verwendet werden, um eine Referenz auf die Getter-Funktion zu erhalten.

__lookupGetter__() durchläuft die Prototyp-Kette, um die angegebene Eigenschaft zu finden. Wenn ein Objekt entlang der Prototyp-Kette die angegebene Eigene Eigenschaft hat, wird das get-Attribut der Eigenschaftsbeschreibung für diese Eigenschaft zurückgegeben. Wenn diese Eigenschaft ein Daten-Property ist, wird undefined zurückgegeben. Wenn die Eigenschaft entlang der gesamten Prototyp-Kette nicht gefunden wird, wird auch undefined zurückgegeben.

__lookupGetter__() ist in der Spezifikation als "normativ optional" definiert, was bedeutet, dass keine Implementierung erforderlich ist, um dies zu implementieren. Jedoch implementieren alle großen Browser diese Methode, und aufgrund ihrer fortdauernden Nutzung ist es unwahrscheinlich, dass sie entfernt wird. Wenn ein Browser __lookupGetter__() implementiert, muss er auch die Methoden __lookupSetter__(), __defineGetter__(), und __defineSetter__() implementieren.

Beispiele

Verwenden von __lookupGetter__()

js
const obj = {
  get foo() {
    return Math.random() > 0.5 ? "foo" : "bar";
  },
};

obj.__lookupGetter__("foo");
// [Function: get foo]

Standardmäßige Suche nach einem Getter einer Eigenschaft

Sie sollten die Object.getOwnPropertyDescriptor() API verwenden, um einen Getter einer Eigenschaft zu suchen. Im Vergleich zu __lookupGetter__() ermöglicht diese Methode das Suchen nach Symbolen-Eigenschaften. Die Methode Object.getOwnPropertyDescriptor() funktioniert auch mit null-Prototyp Objekten, die nicht von Object.prototype erben und daher nicht die Methode __lookupGetter__() haben. Wenn das Verhalten von __lookupGetter__(), die Prototyp-Kette zu durchlaufen, wichtig ist, können Sie es selbst mit Object.getPrototypeOf() implementieren.

js
const obj = {
  get foo() {
    return Math.random() > 0.5 ? "foo" : "bar";
  },
};

Object.getOwnPropertyDescriptor(obj, "foo").get;
// [Function: get foo]
js
const obj2 = {
  __proto__: {
    get foo() {
      return Math.random() > 0.5 ? "foo" : "bar";
    },
  },
};

function findGetter(obj, prop) {
  while (obj) {
    const desc = Object.getOwnPropertyDescriptor(obj, prop);
    if (desc) {
      return desc.get;
    }
    obj = Object.getPrototypeOf(obj);
  }
}

console.log(findGetter(obj2, "foo")); // [Function: get foo]

Spezifikationen

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

Browser-Kompatibilität

Siehe auch