Message
TypeError: property "x" is non-configurable and can't be deleted. (Firefox) TypeError: Cannot delete property 'x' of #<Object> (Chrome)
Type d'erreur
TypeError
in strict mode only.
Quel est le problème ?
Une instruction demande la suppression d'une propriété non-configurable. L'attribut configurable
permet de contrôler si la propriété peut être supprimée de l'objet auquel elle est rattachée et si ces attributs (en dehors de writable
) peuvent être modifiés.
Cette erreur ne se produit qu'en mode strict. En mode non-strict, l'opération de suppression renverra false
.
Exemples
Les propriétés non-configurables ne sont pas très fréquentes mais il est possible d'en créer grâce à Object.defineProperty()
ou à Object.freeze()
.
"use strict"; var obj = Object.freeze({name: "Elsa", score: 157}); delete obj.score; // TypeError "use strict"; var obj = {}; Object.defineProperty(obj, "toto", {value: 2, configurable: false}); delete obj.toto; // TypeError "use strict"; var frozenArray = Object.freeze([0, 1, 2]); frozenArray.pop(); // TypeError
Certaines propriétés natives de JavaScript sont non-configurables. Peut-être que le code tente de supprimer une constante mathématique :
"use strict"; delete Math.PI; // TypeError
Voir aussi
Étiquettes et contributeurs liés au document
Étiquettes :
Contributeurs à cette page :
SphinxKnight
Dernière mise à jour par :
SphinxKnight,