1.let d1 = Object.getOwnPropertyDescriptor({name: "hello"}, 'name');console.info(d1);为什么打印出来是{ value: 'hello', writable: true, enumerable: true, configurable: true }而通过Object.defineProperties()定义的属性,这几个默认就是false
1 回答
![?](http://img1.sycdn.imooc.com/545869390001b87802200220-100-100.jpg)
缥缈止盈
TA贡献2041条经验 获得超4个赞
这个问题在MDN上 defineProperty 有解释,摘录如下:
该方法(指的是defineProperty)允许精确添加或修改对象的属性。这个方法允许修改默认的额外选项(或配置)。默认情况下,使用 Object.defineProperty() 添加的属性值是不可修改的。(即默认是false)
通过赋值操作添加的普通属性是可枚举的(比如本题目中使用JSON格式创建的对象,相当于是
var a = {}; a.name='hello';
,实际是赋值操作),能够在属性枚举期间呈现出来(for...in 或 Object.keys 方法), 这些属性的值可以被改变,也可以被删除。
添加回答
举报
0/150
提交
取消