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

SpĂ©cification État Commentaires
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de '[[OwnPropertyKeys]]' dans cette spécification.
Standard DĂ©finition initiale.
ECMAScript (ECMA-262)
La définition de '[[OwnPropertyKeys]]' dans cette spécification.
Standard Ă©volutif  

Compatibilité des navigateurs

BCD tables only load in the browser

Voir aussi