CNode

关于不可枚举属性

问答
Zzhongshiji发布于8 年前最后回复8 年前4 回复3354 浏览0 收藏

在MDN上看到这样一个例子:

var obj = Object.create({foo: 1}, { // foo 是个继承属性。
    bar: {
        value: 2  // bar 是个不可枚举属性。
    },
    baz: {
        value: 3,
        enumerable: true  // baz 是个自身可枚举属性。
    }
});

var copy = Object.assign({}, obj);
console.log(copy); // { baz: 3 }

里面为什么说bar是个不可枚举属性呢? 网上搜索的答案看不太懂。

查看回复

回复 (4)

W
waitingsong#1·8 年前

Object.create() 好像是只添加属性值,那么 enumerable 值默认是 false

Z
zhongshiji#3·8 年前
引用 atian25多看 MDN https://developer.mozilla.org/zh CN/docs/Web/JavaScript/Enumerability and ownership of pr...

@atian25

语法
Object.create(proto, [propertiesObject])
参数
proto
新创建对象的原型对象。
propertiesObject
可选。如果没有指定为 undefined,则是要添加到新创建对象的可枚举属性(即其自身定义的属性,而不是其原型链上的枚举属性)对象的属性描述符以及相应的属性名称。这些属性对应Object.defineProperties()的第二个参数。

然后再跳到Object.defineProperties()去看关于枚举,不特意去细细真看不出来。》。《

参与回复
登录后即可参与回复。登录