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 zur Webkompatibilität spezifiziert und muss nicht auf jeder Plattform implementiert werden. Es kann sein, dass sie nicht überall funktioniert.
Die __lookupGetter__()
-Methode von Object
-Instanzen gibt die Funktion zurück, die als Getter für die angegebene Eigenschaft gebunden ist.
Syntax
__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 für die angegebene Eigenschaft gebunden ist. Gibt undefined
zurück, wenn keine solche Eigenschaft gefunden wird oder die Eigenschaft eine Dateneigenschaft ist.
Beschreibung
Alle Objekte, die von Object.prototype
erben (das heißt alle außer Objekte mit Null-Prototyp) erben die Methode __lookupGetter__()
. Wenn ein Getter für eine Eigenschaft eines Objekts definiert wurde, ist es nicht möglich, auf die Getter-Funktion durch diese Eigenschaft zuzugreifen, da diese Eigenschaft den Rückgabewert dieser Funktion referenziert. __lookupGetter__()
kann verwendet werden, um einen Verweis auf die Getter-Funktion zu erhalten.
__lookupGetter__()
durchläuft die Prototypkette, um die angegebene Eigenschaft zu finden. Wenn irgendein Objekt entlang der Prototypkette die angegebene eigenen Eigenschaft hat, wird das get
-Attribut des Eigenschaftsdeskriptors für diese Eigenschaft zurückgegeben. Wenn diese Eigenschaft eine Dateneigenschaft ist, wird undefined
zurückgegeben. Wenn die Eigenschaft entlang der gesamten Prototypkette nicht gefunden wird, wird ebenfalls undefined
zurückgegeben.
__lookupGetter__()
ist in der Spezifikation als "normativ optional" definiert, was bedeutet, dass keine Implementierung erforderlich ist, um dies zu implementieren. Allerdings implementieren alle großen Browser es, und aufgrund seines anhaltenden Gebrauchs ist es unwahrscheinlich, dass es entfernt wird. Wenn ein Browser __lookupGetter__()
implementiert, muss er auch die Methoden __lookupSetter__()
, __defineGetter__()
und __defineSetter__()
implementieren.
Beispiele
Verwendung von __lookupGetter__()
const obj = {
get foo() {
return Math.random() > 0.5 ? "foo" : "bar";
},
};
obj.__lookupGetter__("foo");
// [Function: get foo]
Nachschlagen eines Getters einer Eigenschaft auf standardmäßige Weise
Sie sollten die Object.getOwnPropertyDescriptor()
API verwenden, um den Getter einer Eigenschaft nachzuschlagen. Im Vergleich zu __lookupGetter__()
ermöglicht diese Methode das Nachschlagen von Symbol-Eigenschaften. Die Methode Object.getOwnPropertyDescriptor()
funktioniert auch mit Objekten mit Null-Prototyp, die nicht von Object.prototype
erben und daher die Methode __lookupGetter__()
nicht haben. Wenn das Verhalten von __lookupGetter__()
, die Prototypkette zu durchlaufen, wichtig ist, können Sie es selbst mit Object.getPrototypeOf()
implementieren.
const obj = {
get foo() {
return Math.random() > 0.5 ? "foo" : "bar";
},
};
Object.getOwnPropertyDescriptor(obj, "foo").get;
// [Function: get foo]
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__ |