【发布时间】:2017-10-22 13:46:49
【问题描述】:
我正在尝试学习 javascript,并且已经看到我们可以使用对象的属性。 (我的意思是值、可写、可枚举、可配置)。
据我所知,我认为更改 {configurable: false} 会限制任何更多的配置更改,例如 {writable: false, enumerable: false}
我已经写在下面尝试一下,但我得到的结果与我预期的结果完全不同。
我对 {configurable:false} 的含义有什么误解,或者代码有问题吗? TIA。
"use strict";
window.onload = function(){
var o = {x:1};
//Make "x" non-configurable
Object.defineProperty(o, "x", {configurable: false});
//Seal "o";
Object.seal(o);
console.log(Object.getOwnPropertyDescriptor(o, "x"));
//outputs => Object { value: 1, writable: true, enumerable: true, configurable: false }
console.log(Object.isSealed(o));
//outputs => true
Object.defineProperty(o, "x", {writable: false}); //this doesn't cause any errors.
console.log(Object.getOwnPropertyDescriptor(o, "x"));
//outputs => Object { value: 1, writable: false, enumerable: true, configurable: false }
}
【问题讨论】:
标签: javascript immutability defineproperty