handler.get() - JavaScript | MDN
Probieren Sie es aus
const monster = {
secret: "easily scared",
eyeCount: 4,
};
const handler = {
get(target, prop, receiver) {
if (prop === "secret") {
return `${target.secret.substring(0, 4)} ... shhhh!`;
}
return Reflect.get(...arguments);
},
};
const proxy = new Proxy(monster, handler);
console.log(proxy.eyeCount);
// Expected output: 4
console.log(proxy.secret);
// Expected output: "easi ... shhhh!"
Syntax
js
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 üblicherweise 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 wirft einen TypeError, wenn die Handlerdefinition eine der folgenden Invarianten verletzt:
- Der gemeldete Wert für eine Eigenschaft muss derselbe sein wie der Wert der entsprechenden Zielobjekteigenschaft, wenn die Zielobjekteigenschaft eine nicht-beschreibbare, nicht-konfigurierbare eigene Dateneigenschaft ist. Das heißt, wenn
Reflect.getOwnPropertyDescriptor()für die Eigenschaft auftargetconfigurable: false, writable: falsezurückgibt, dann muss die Falle denselben Wert wie dasvalue-Attribut im Eigenschaftsbeschreiber vontargetzurückgeben. - Der gemeldete Wert für eine Eigenschaft muss
undefinedsein, wenn die entsprechende Zielobjekteigenschaft eine nicht-konfigurierbare eigene Accessor-Eigenschaft ist, die einen undefinierten Getter hat. Das heißt, wennReflect.getOwnPropertyDescriptor()für die Eigenschaft auftargetconfigurable: false, get: undefinedzurückgibt, dann muss die Falleundefinedzurückgeben.
Beispiele
Falle für das Abrufen eines Eigenschaftswerts
Der folgende Code fängt das Abrufen eines Eigenschaftswerts ab.
js
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.
js
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
| Spezifikation |
|---|
| ECMAScript® 2026 Language Specification # sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver |
Browser-Kompatibilität
Siehe auch
Help improve MDN
Erfahren Sie, wie Sie beitragen können Diese Seite wurde automatisch aus dem Englischen übersetzt.