一:奇怪的报错
以下代码,控制台输出结果是9527 TypeError
var employee = {};
Object.defineProperty(employee, "id", {
writable: false,
value: "9527",
});
employee.id = "9528";
console.log(employee.id);
Object.defineProperty(employee, "id", {
writable: true,
});
employee.id = "9529";
console.log(employee.id);
二:报错原因
configurable在未设置时,默认是false,即不能配置。
所以在未设置configurable时,将writable从false设为true时会报错
三:原因验证
将configurable设为true时,就可以将writable由false设置为true(不报错)
就算没有configurable: true,writable由true改为false时也不报错
var employee = {};
Object.defineProperty(employee, "id", {
writable: true,
value: "9527",
// configurable: true
});
employee.id = "9528";
console.log(employee.id);
Object.defineProperty(employee, "id", {
writable: false,
});
employee.id = "9529";
console.log(employee.id);