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
}
});