--- title: 'TypeError: can''t redefine non-configurable property "x"' slug: Web/JavaScript/Reference/Errors/Cant_redefine_property tags: - Error - Errors - JavaScript - TypeError translation_of: Web/JavaScript/Reference/Errors/Cant_redefine_property ---
TypeError: can't redefine non-configurable property "x" (Firefox) TypeError: Cannot redefine property: "x" (Chrome)
{{jsxref("TypeError")}}
プロパティを再定義しようとしましたが、そのプロパティは設定不可です。configurable
属性は、プロパティをオブジェクトから削除できるかどうか、および (writable
以外で) 変更できるかどうかを制御します。通常、オブジェクト初期化子で生成されたオブジェクトのプロパティは、変更可能です。しかし、{{jsxref("Object.defineProperty()")}} を使用した場合などは、既定でプロパティを修正できません。
Object.defineProperty
で生成された設定不可のプロパティ設定可能にしたくない場合、{{jsxref("Object.defineProperty()")}} は設定不可のプロパティを生成します。
var obj = Object.create({}); Object.defineProperty(obj, "foo", {value: "bar"}); Object.defineProperty(obj, "foo", {value: "baz"}); // TypeError: can't redefine non-configurable property "foo"
後のコードで再定義するためには、"foo" プロパティを設定可能にする必要があります。
var obj = Object.create({}); Object.defineProperty(obj, "foo", {value: "bar", configurable: true}); Object.defineProperty(obj, "foo", {value: "baz", configurable: true});