Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
handler.get()
Baseline Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2016.
La méthodehandler.get() est une trappe pour intercepter l'accès à la valeur d'une propriété.
Dans cet article
Exemple interactif
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: 4console.log(proxy1.secret);// Expected output: "easi ... shhhh!"Syntaxe
var p = new Proxy(cible, { get: function (cible, propriété, récepteur) {},});Paramètres
Les paramètres suivants sont passés à la méthodeget.this est lié au gestionnaire.
Valeur de retour
La méthodeget peut renvoyer n'importe quelle valeur.
Description
La méthodehandler.get est une trappe pour intercepter l'accès à une propriété.
Interceptions
Cette trappe permet d'intercepter les opérations suivantes :
- l'accès à une propriété :
proxy[toto]etproxy.truc - L'accès aux propriétés héritées :
Object.create(proxy)[toto] Reflect.get()
Invariants
Si les invariants suivants ne sont pas respectés, le proxy renverra une exceptionTypeError :
- La valeur renvoyée pour la propriété doit être la même que la valeur de la propriété correspondante de l'objet cible si celle-ci est non-configurable et non accessible en lecture.
- La valeur renvoyée doit valoir
undefinedsi la propriété correspondante de l'objet cible est une propriété d'accesseur non-configurable dont l'attribut [[Get]] vautundefined.
Exemples
Dans l'exemple suivant, on intercepte les accès aux propriétés :
var p = new Proxy( {}, { get: function (cible, propriété, récepteur) { console.log("appelée : " + propriété); return 10; }, },);console.log(p.a); // "appelée : a"// 10Le code suivant ne respecte pas l'invariant :
var obj = {};Object.defineProperty(obj, "a", { configurable: false, enumerable: false, value: 10, writable: false,});var p = new Proxy(obj, { get: function (cible, propriété) { return 20; },});p.a; // exception TypeError levéeSpécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver> |