javascript对象的属性标签默认的不是false吗?

1.

let d1 = Object.getOwnPropertyDescriptor({name: "hello"}, 'name');
console.info(d1);

为什么打印出来是

{ value: 'hello',
  writable: true,
  enumerable: true,
  configurable: true }

而通过Object.defineProperties()定义的属性,这几个默认就是false

阅读 1.4k
1 个回答

这个问题在MDN上 defineProperty 有解释,摘录如下:

  1. 该方法(指的是defineProperty)允许精确添加或修改对象的属性。这个方法允许修改默认的额外选项(或配置)。默认情况下,使用 Object.defineProperty() 添加的属性值是不可修改的。(即默认是false)
  2. 通过赋值操作添加的普通属性是可枚举的(比如本题目中使用JSON格式创建的对象,相当于是var a = {}; a.name='hello';,实际是赋值操作),能够在属性枚举期间呈现出来(for...in 或 Object.keys 方法), 这些属性的值可以被改变,也可以被删除。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题