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.
La méthode handler.get()
est une trappe pour intercepter l'accès à la valeur d'une propriété.
Exemple interactif
Syntaxe
var p = new Proxy(cible, {
get: function (cible, propriété, récepteur) {},
});
Paramètres
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, 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 :
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