Errors: Cant redefine property
Errors: Cant redefine property
信息
TypeError: can't redefine non-configurable property "x" (Firefox)
TypeError: Cannot redefine property: "x" (Chrome)
错误类型
TypeError
什么地方出了错?
试图重新定义一个属性,但该属性是不可配置的。该configurable
属性控制是否可以从对象中删除该属性,以及是否writable
可以更改其属性(非)。通常,由对象初始值设定项创建的对象中的属性是可配置的。但是,例如,使用时Object.defineProperty()
,该属性默认情况下是不可配置的。
例子
由Object.defineProperty创建的不可配置属性
在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}