La méthode handler.get()
est une trappe pour intercepter l'accès à la valeur d'une propriété.
Syntaxe
var p = new Proxy(cible, { get: function(cible, propriété, récepteur) { } });
Paramètres
Les paramètres suivants sont passés à la méthode get
. this
est lié au gestionnaire.
cible
- L'objet cible.
propriété
- Le nom de la propriété qu'on souhaite obtenir.
récepteur
- Le proxy ou un objet qui hérite du proxy.
Valeur de retour
La méthode get
peut renvoyer n'importe quelle valeur.
Description
La méthode handler.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 exception TypeError
:
- 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
undefined
si 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, prop, récepteur) { console.log("appelée : " + prop); return 10; } }); console.log(p.a); // "appelée : a" // 10
Le 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, prop) { return 20; } }); p.a; // exception TypeError levée
Spécifications
Spécification | Statut | Commentaires |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) La définition de '[[Get]]' dans cette spécification. |
Standard | Définition initiale. |
ECMAScript 2017 Draft (ECMA-262) La définition de '[[Get]]' dans cette spécification. |
Projet |
Compatiblité des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Support simple | ? | 18 (18) | ? | ? | ? |
Fonctionnalité | Android | Chrome pour Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | ? | ? | 18.0 (18) | ? | ? | ? |
Voir aussi
Étiquettes et contributeurs liés au document
Étiquettes :
Contributeurs à cette page :
SphinxKnight
Dernière mise à jour par :
SphinxKnight,