关于不可枚举属性
发布于 6 年前 作者 zhongshiji 2690 次浏览 来自 问答

在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 回复

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

@atian25

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

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

回到顶部