Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
TypeError: can't redefine non-configurable property "x"
Message
TypeError: Cannot modify non-writable property {x} (Edge)TypeError: can't redefine non-configurable property "x" (Firefox)TypeError: Cannot redefine property: "x" (Chrome)Dans cet article
Type d'erreur
TypeErrorQuel est le problème ?
On essaie de redéfinir une propriété alors que celle-ci estnon-configurable. L'attributconfigurable permet d'indiquer si la propriété peut être supprimée d'un objet et si ses attributs (en dehors dewritable) peuvent être modifiés. Généralement, les propriétés d'un objet créées avec uninitialisateur d'objet sont configurables. Cependant, lorsqu'on utilise la méthodeObject.defineProperty(), la propriété n'est pas configurable par défaut.
Exemples
>Propriétés non-configurables créées avecObject.defineProperty()
La méthodeObject.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 });