我想要一个永远未定义的属性:
var foo = {bar:undefined}
如果有人后来尝试更改属性栏,那么它也会导致未定义。
foo.bar = 'someValue'//
foo.bar//this time this should result in undefined.
我的意思是如何设置一个不可更改的属性。
答案 0 :(得分:1)
您目前可以这样做:
var foo = {}
Object.defineProperty(foo, 'bar', {
enumerable: false,
configurable: false,
writable: false,
value: undefined
});
有些人指出,undefined
不等于"undefined"
,显然是一个字符串。但是,为了清楚起见,我添加了它,因为省略value
属性确实失去了能够使用defineProperty使它们不可配置的观点。一旦配置,它结束,所以它有用的价值。如果您希望它返回value
,请忽略undefined
。
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
答案 1 :(得分:1)
好的,根据来自@somethinghere的提示(谁再次打破他/她自己的答案......)这里有一个工作示例,它设置一个对象成员,默认为undefined
并且不可写:
var foo = {}
Object.defineProperty(foo, 'bar', {
enumerable: false,
configurable: false,
writable: false
});
foo.bar = 'abcdefg';
console.log( foo.bar ); // returns undefined
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
请注意,您仍可以删除并重新设置此属性。 (虽然你不能简单地覆盖它。)