Object.prototype.__lookupSetter__()
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 wird nur zur Web-Kompatibilität spezifiziert und muss nicht auf allen Plattformen implementiert werden. Sie funktioniert möglicherweise nicht überall.
Die __lookupSetter__()
Methode von Object
Instanzen gibt die Funktion zurück, die als Setter an die angegebene Eigenschaft gebunden ist.
Syntax
__lookupSetter__(prop)
Parameter
prop
-
Ein String, der den Namen der Eigenschaft enthält, dessen Setter zurückgegeben werden soll.
Rückgabewert
Die Funktion, die als Setter an 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 null-Prototyp-Objekte), erben die __lookupSetter__()
Methode. Wenn ein Setter für eine Eigenschaft eines Objekts definiert wurde, ist es nicht möglich, die Setter-Funktion über diese Eigenschaft zu referenzieren, da diese Eigenschaft die Funktion nur aufruft, wenn sie gesetzt wird. __lookupSetter__()
kann verwendet werden, um eine Referenz auf die Setter-Funktion zu erhalten.
__lookupSetter__()
geht die Prototyp-Kette hoch, um die angegebene Eigenschaft zu finden. Wenn ein Objekt entlang der Prototyp-Kette die angegebene eigene Eigenschaft hat, wird das set
Attribut des Eigenschaftsdeskriptors für diese Eigenschaft zurückgegeben. Ist die Eigenschaft eine Dateneigenschaft, wird undefined
zurückgegeben. Wird die Eigenschaft entlang der gesamten Prototyp-Kette nicht gefunden, wird ebenfalls undefined
zurückgegeben.
__lookupSetter__()
ist in der Spezifikation als "normativ optional" definiert, was bedeutet, dass keine Implementierung erforderlich ist, diese zu implementieren. Allerdings implementieren alle großen Browser sie, und aufgrund ihrer fortgesetzten Nutzung ist es unwahrscheinlich, dass sie entfernt wird. Wenn ein Browser __lookupSetter__()
implementiert, muss er auch die Methoden __lookupGetter__()
, __defineGetter__()
und __defineSetter__()
implementieren.
Beispiele
Verwendung von __lookupSetter__()
const obj = {
set foo(value) {
this.bar = value;
},
};
obj.__lookupSetter__("foo");
// [Function: set foo]
Den Setter einer Eigenschaft auf die Standardweise nachschlagen
Sie sollten die Object.getOwnPropertyDescriptor()
API verwenden, um den Setter einer Eigenschaft nachzuschlagen. Im Vergleich zu __lookupSetter__()
ermöglicht diese Methode das Nachschlagen von Symbol Eigenschaften. Die Object.getOwnPropertyDescriptor()
Methode funktioniert auch mit null-Prototyp-Objekten, die nicht von Object.prototype
erben und daher die __lookupSetter__()
Methode nicht haben. Wenn das Verhalten von __lookupSetter__()
, die Prototyp-Kette hochzugehen, wichtig ist, können Sie es selbst mit Object.getPrototypeOf()
implementieren.
const obj = {
set foo(value) {
this.bar = value;
},
};
Object.getOwnPropertyDescriptor(obj, "foo").set;
// [Function: set foo]
const obj2 = {
__proto__: {
set foo(value) {
this.bar = value;
},
},
};
function findSetter(obj, prop) {
while (obj) {
const desc = Object.getOwnPropertyDescriptor(obj, prop);
if (desc) {
return desc.set;
}
obj = Object.getPrototypeOf(obj);
}
}
console.log(findSetter(obj2, "foo")); // [Function: set foo]
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # sec-object.prototype.__lookupSetter__ |