TypeError: can't redefine non-configurable property "x"

Message

TypeError: can't redefine non-configurable property "x" (Firefox)
TypeError: Cannot redefine property: "x" (Chrome)

Type d'erreur

TypeError

Quel est le problème ?

On essaie de redéfinir une propriété alors que celle-ci est non-configurable. L'attribut configurable permet d'indiquer si la propriété peut être supprimée d'un objet et si ses attributs (en dehors de writable) peuvent être modifiés. Généralement, les propriétés d'un objet créées avec un initialisateur d'objet sont configurables. Cependant, lorsqu'on utilise la méthode Object.defineProperty(), la propriété n'est pas configurable par défaut.

Exemples

Propriétés non-configurables créées avec Object.defineProperty()

La méthode Object.defineProperty() crée des propriétés non-configurables si on n'indique pas le contraire :

var obj = Object.create({});
Object.defineProperty(obj, "toto", {value: "machin"}); 

Object.defineProperty(obj, "toto", {value: "bidule"});
// TypeError: can't redefine non-configurable property "toto"

Si on veut pouvoir redéfinir la propriété "toto" dans la suite du code, il faudra la créer comme étant configurable.

var obj = Object.create({});
Object.defineProperty(obj, "toto", {value: "machin", configurable: true});
Object.defineProperty(obj, "toto", {value: "bidule", configurable: true});

Voir aussi

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : SphinxKnight
 Dernière mise à jour par : SphinxKnight,