handler.has()
La méthode handler.has()
est une trappe pour l'opérateur in
.
Exemple interactif
Syntaxe
js
var p = new Proxy(cible, {
has: function (cible, prop) {},
});
Paramètres
Valeur de retour
La méthode has
doit renvoyer une valeur booléenne.
Description
La méthode handler.has
est une trappe pour l'opérateur in
.
Interceptions
Cette trappe permet d'intercepter les opérations suivantes :
- L'accès à une propriété :
toto in proxy
- L'accès à une propriété héritée :
toto in Object.create(proxy)
- Accès via l'instruction
with
:with(proxy) { (foo); }
Reflect.has()
Invariants
Si les invariants suivants ne sont pas respectés, le proxy lèvera une exception TypeError
:
- Une propriété ne peut pas être indiquée comme non-existante s'il existe une propriété correspondante de l'objet cible qui est une propriété propre et non-configurable.
- Une propriété ne peut pas être indiquée comme non-existante s'il existe une propriété correspondante propre sur l'objet cible et que celui-ci n'est pas extensible.
Exemples
Dans l'exemple qui suit, on intercepte l'opérateur in
:
js
var p = new Proxy(
{},
{
has: function (cible, prop) {
console.log("appelée : " + prop);
return true;
},
},
);
console.log("a" in p); // "appelée : a"
// true
L'exemple suivant ne respecte pas un invariant :
js
var obj = { a: 10 };
Object.preventExtensions(obj);
var p = new Proxy(obj, {
has: function (cible, prop) {
return false;
},
});
"a" in p; // TypeError levée
Spécifications
Specification |
---|
ECMAScript Language Specification # sec-proxy-object-internal-methods-and-internal-slots-hasproperty-p |
Compatibilité des navigateurs
BCD tables only load in the browser
Voir aussi
Proxy
handler
(en-US)- L'opérateur
in
Reflect.has()