handler.get()
La méthode handler.get()
est une trappe pour intercepter l'accès à la valeur d'une propriété.
Exemple interactif
Syntaxe
js
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 ou le symbole (
Symbol
) 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 :
js
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"
// 10
Le code suivant ne respecte pas l'invariant :
js
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ée
Spécifications
Specification |
---|
ECMAScript Language Specification # sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver |
Compatibilité des navigateurs
BCD tables only load in the browser