La méthode handler.ownKeys()
est une trappe pour Object.getOwnPropertyNames()
.
Syntaxe
var p = new Proxy(cible, { ownKeys: function(cible) { } });
Paramètres
Le paramètre suivant est passé à la méthode ownKeys
. this
est lié au gestionnaire.
cible
- L'objet cible.
Valeur de retour
La méthode ownKeys
doit renvoyer un objet énumérable.
Description
La méthode handler.ownKeys()
est une trappe pour intercepter les opérations de Object.getOwnPropertyNames()
.
Interceptions
Cette trappe permet d'intercepter les opérations suivantes :
Invariants
Si les invariants suivants ne sont pas respectés, le proxy renverra une exception TypeError
:
- Le résultat de
ownKeys
doit être un tableau. - Le type de chaque élément de ce tableau est soit une
String
, soit unSymbol
. - Le tableau résultant doit contenir les clés de toutes les propriétés propres non-configurables de l'objet cible.
- Si l'objet cible n'est pas extensible, la liste obtenue doit contenir toutes les clés pour les propriétés propres et aucune autre valeur.
Exemples
Dans l'exemple suivant, on intercepte l'action de Object.getOwnPropertyNames()
.
var p = new Proxy({}, { ownKeys: function(target) { console.log("appelée"); return ["a", "b", "c"]; } }); console.log(Object.getOwnPropertyNames(p)); // "appelée" // [ "a", "b", "c"]
L'exemple suivant ne respecte pas l'ensemble des invariants :
var obj = {}; Object.defineProperty(obj, "a", { configurable: false, enumerable: true, value: 10 } ); var p = new Proxy(obj, { ownKeys: function(cible) { return [123, 12.5, true, false, undefined, null, {}, []]; } }); console.log(Object.getOwnPropertyNames(p)); // TypeError est levée
Spécifications
Spécification | État | Commentaires |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) La définition de '[[OwnPropertyKeys]]' dans cette spécification. |
Standard | Définition initiale. |
ECMAScript 2017 Draft (ECMA-262) La définition de '[[OwnPropertyKeys]]' dans cette spécification. |
Projet |
Compatibilité 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) | ? | ? | ? |
Notes de compatibilité
Firefox
- Dans Gecko 42 (Firefox 42 / Thunderbird 42 / SeaMonkey 2.39), l'implémentation de
ownKey
a été mise à jour pour respecter la spécification finale ES6/ES2015 (cf. bug 1049662) :- Le résultat est désormais vérifié afin de contrôler que c'est un tableau et que ses éléments sont des chaînes ou des symboles
- Énumérer des noms de propriétés propres en doubles n'entraîne plus d'échec
Voir aussi
Étiquettes et contributeurs liés au document
Étiquettes :
Contributeurs à cette page :
SphinxKnight
Dernière mise à jour par :
SphinxKnight,