handler.get()
La méthode handler.get()
est une trappe pour intercepter l'accès à la valeur d'une propriété.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request !
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 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 :
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
Spécification | État | Commentaires |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) La définition de '[[Get]]' dans cette spécification. |
Standard | Définition initiale. |
ECMAScript (ECMA-262) La définition de '[[Get]]' dans cette spécification. |
Standard évolutif |
Compatiblité des navigateurs
BCD tables only load in the browser