Javascript 有人能解释一下这段代码中发生了什么吗?

Javascript 有人能解释一下这段代码中发生了什么吗?,javascript,javascript-objects,Javascript,Javascript Objects,此程序输出foo,作为输出。我想知道是怎么回事。我可以得到这个程序中发生了什么的正确解释吗?对象。keys返回对象上的可枚举键 默认情况下,Object.create中定义的属性是不可枚举的(将enumerable:true与值一起添加将改变这一点) 像my_obj.foo这样定义的属性是可枚举的 因此,Object.keys(my_obj)只返回[“foo”],因为这是对象上唯一可枚举的属性 文档: 该方法使用指定的原型对象和属性创建新对象: var my_obj = Object.cr

此程序输出
foo
,作为输出。我想知道是怎么回事。我可以得到这个程序中发生了什么的正确解释吗?

对象。keys
返回对象上的可枚举键

默认情况下,
Object.create
中定义的属性是不可枚举的(将
enumerable:true
值一起添加将改变这一点)

my_obj.foo
这样定义的属性是可枚举的

因此,
Object.keys(my_obj)
只返回
[“foo”]
,因为这是对象上唯一可枚举的属性

文档:

该方法使用指定的原型对象和属性创建新对象:

var my_obj = Object.create({}, { 
    getFoo: {
        value: function () { return this.foo; }
    } 
});

my_obj.foo = 1;

console.log(Object.keys(my_obj));
使用这种语法,默认情况下属性不可写、不可枚举或不可配置。为此:

Object.create(proto[, propertiesObject])
属性
foo
可根据其创建方式进行枚举


该方法返回给定对象自身的可枚举属性的数组。这就是为什么你得到了
['foo']

你希望得到什么样的输出?你能详细解释一下吗@Nietthedark Absollthanks@Alex感谢您的回复
var my_obj = Object.create({}, {
    getFoo: {
        value: function () { return this.foo; },
        writable: true,
        enumerable: true,
        configurable: true
    } 
});