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 Falle für die [[Get]]
interne Objektmethode, die von Operationen wie Eigenschaftszugriffen verwendet wird.
Probieren Sie es aus
Syntax
new Proxy(target, {
get(target, property, receiver) {
}
})
Parameter
Die folgenden Parameter werden an die get()
-Methode übergeben. this
ist an den Handler gebunden.
target
-
Das Zielobjekt.
property
-
Ein String oder ein
Symbol
, das den Eigenschaftsnamen darstellt. 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 get()
-Methode kann jeden Wert zurückgeben, der den Eigenschaftswert darstellt.
Beschreibung
Abfangvorgänge
Diese Falle kann folgende 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 löst einen TypeError
aus, wenn die Handler-Definition eine der folgenden Invarianten verletzt:
- Der angegebene Wert für eine Eigenschaft muss mit dem Wert der entsprechenden Zielobjekteigenschaft übereinstimmen, wenn die Zielobjekteigenschaft eine nicht beschreibbare, nicht konfigurierbare eigene Dateneigenschaft ist. Das heißt, wenn
Reflect.getOwnPropertyDescriptor()
configurable: false, writable: false
für die Eigenschaft auftarget
zurückgibt, dann muss die Falle denselben Wert wie dasvalue
-Attribut im Property Descriptor vontarget
zurückgeben. - Der gemeldete Wert für eine Eigenschaft muss
undefined
sein, wenn die entsprechende Zielobjekteigenschaft eine nicht konfigurierbare eigene Accessor-Eigenschaft ist, die einen undefinierten Getter besitzt. Das heißt, wennReflect.getOwnPropertyDescriptor()
configurable: false, get: undefined
für die Eigenschaft auftarget
zurückgibt, dann muss die Falleundefined
zurückgeben.
Beispiele
Falle für den Abruf eines Eigenschaftswerts
Der folgende Code fängt den Abruf 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 verletzt 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 Language Specification # sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver |
Browser-Kompatibilität
BCD tables only load in the browser