TypeError:无法重新定义非配置属性“x”

JavaScript异常“无法重新定义非配置属性”发生在试图重新定义属性,但该属性为不可配置.

消息

TypeError:无法重新定义属性:“x”(基于V8)TypeError:无法重新定义非配置属性“x”(Firefox)TypeError:试图更改只读属性的值。(野生动物园)

错误类型

出了什么问题?

试图重新定义属性,但该属性不可配置的. The可配置的属性控制是否可以从中删除属性对象及其属性(而不是可写的)可以更改。通常,对象中由对象初始化器可配置。但是,例如,在使用对象.defineProperty(),默认情况下该属性不可配置。

示例

Object.defineProperty创建的非配置属性

这个对象.defineProperty()如果您尚未将其指定为可配置。

js公司
const-obj=对象创建({});Object.defineProperty(obj,“foo”,{value:“bar”});Object.defineProperty(obj,“foo”,{value:“baz”});//TypeError:无法重新定义非配置属性“foo”

如果要重新定义“foo”属性,则需要将其设置为可配置代码的后面部分。

js公司
const-obj=对象创建({});Object.defineProperty(obj,“foo”,{value:“bar”,可配置:true});Object.defineProperty(obj,“foo”,{value:“baz”,可配置:true});

另请参见