handler.ownKeys()

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 un Symbol.
  • 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

Compatibilité des navigateurs

BCD tables only load in the browser

Voir aussi