JavaScript参考手册
错误 | Errors
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});
错误 | Errors相关
JavaScript 是一种高级编程语言,通过解释执行,是一门动态类型,面向对象(基于原型)的解释型语言。它已经由ECMA(欧洲电脑制造商协会)通过 ECMAScript 实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器( Chrome、IE、FireFox、Safari、Opera )支持。JavaScript 是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持 I/O,比如网络