强制属性始终未定义

force property as is always undefined

本文关键字:未定义 属性      更新时间:2023-09-26

我想要一个始终未定义的属性:

var foo = {bar:undefined}

如果有人后来尝试更改属性栏,那么它也应该导致未定义。

foo.bar = 'someValue'//
foo.bar//this time this should result in undefined.

我的意思是如何设置一个不可更改的属性。

好的,根据@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

请注意,您仍然可以删除并重新设置此属性。(虽然你不能简单地覆盖它。

您目前可以执行此操作:

var foo = {}
Object.defineProperty(foo, 'bar', {
  enumerable: false,
  configurable: false,
  writable: false,
  value: undefined
});

正如一些人所指出的,undefined不等于"undefined",一个显然是一个字符串。但是,为了清楚起见,我添加了它,因为省略value属性实际上失去了能够使用 defineProperty 使它们不可配置的意义。配置完成后,它就结束了,因此拥有该值很有用。如果您希望它返回undefined,请省略value

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty