TypeError: can't redefine non-configurable property "x" - JavaScript 编辑

错误提示

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});

相关内容

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:106 次

字数:2953

最后编辑:6 年前

编辑次数:0 次

更多

友情链接

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文