handler.get()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
Die handler.get()
-Methode ist eine Trap für die [[Get]]
-interne Objektmethode, die von Operationen wie Eigenschafts-Accessoren verwendet wird.
Probieren Sie es aus
const monster1 = {
secret: "easily scared",
eyeCount: 4,
};
const handler1 = {
get: function (target, prop, receiver) {
if (prop === "secret") {
return `${target.secret.substring(0, 4)} ... shhhh!`;
}
return Reflect.get(...arguments);
},
};
const proxy1 = new Proxy(monster1, handler1);
console.log(proxy1.eyeCount);
// Expected output: 4
console.log(proxy1.secret);
// Expected output: "easi ... shhhh!"
Syntax
new Proxy(target, {
get(target, property, receiver) {
}
})
Parameter
Die folgenden Parameter werden an die Methode get()
übergeben. this
ist an den Handler gebunden.
target
-
Das Zielobjekt.
property
-
Ein String oder ein
Symbol
, das den Eigenschaftsnamen repräsentiert. receiver
-
Der
this
-Wert für Getter; sieheReflect.get()
. Dies ist normalerweise entweder der Proxy selbst oder ein Objekt, das vom Proxy erbt.
Rückgabewert
Die Methode get()
kann jeden Wert zurückgeben, der den Eigenschaftswert repräsentiert.
Beschreibung
Interzeptierungen
Diese Trap kann die folgenden Operationen abfangen:
- Eigenschaftszugriff:
proxy[foo]
undproxy.bar
Reflect.get()
Oder jede andere Operation, die die [[Get]]
-interne Methode aufruft.
Invarianten
Die [[Get]]
-Interne Methode des Proxys wirft einen TypeError
, wenn die Definition des Handlers gegen eine der folgenden Invarianten verstößt:
- Der für eine Eigenschaft gemeldete Wert muss mit dem Wert der entsprechenden Eigenschaft des Zielobjekts übereinstimmen, wenn die Eigenschaft des Zielobjekts eine nicht beschreibbare, nicht konfigurierbare eigene Daten-Eigenschaft ist. Das heißt, wenn
Reflect.getOwnPropertyDescriptor()
configurable: false, writable: false
für die Eigenschaft auf demtarget
zurückgibt, muss die Trap denselben Wert wie dasvalue
Attribut in der Eigenschaftsbeschreibung destarget
zurückgeben. - Der für eine Eigenschaft gemeldete Wert muss
undefined
sein, wenn die entsprechende Eigenschaft des Zielobjekts eine nicht konfigurierbare eigene Accessor-Eigenschaft ist, deren Getter undefiniert ist. Das heißt, wennReflect.getOwnPropertyDescriptor()
configurable: false, get: undefined
für die Eigenschaft auf demtarget
zurückgibt, muss die Trapundefined
zurückgeben.
Beispiele
Trap für das Abrufen eines Eigenschaftswerts
Der folgende Code fängt das Abrufen eines Eigenschaftswerts ab.
const p = new Proxy(
{},
{
get(target, property, receiver) {
console.log(`called: ${property}`);
return 10;
},
},
);
console.log(p.a);
// "called: a"
// 10
Der folgende Code verstößt gegen eine Invariante.
const obj = {};
Object.defineProperty(obj, "a", {
configurable: false,
enumerable: false,
value: 10,
writable: false,
});
const p = new Proxy(obj, {
get(target, property) {
return 20;
},
});
p.a; // TypeError is thrown
Spezifikationen
Specification |
---|
ECMAScript® 2025 Language Specification # sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver |
Browser-Kompatibilität
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
get |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support