2016-07-18 120 views

回答

0

Object.create()方法創建具有指定原型對象和屬性的新對象:

Object.create(proto[, propertiesObject]) 

使用這種語法,默認屬性不可寫,可枚舉或可配置。爲了使這樣的:

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

酒店foo根據已建立的方法是枚舉。

Object.keys()方法返回給定對象自己的數組可枚舉的屬性。這就是你有['foo']的原因。

+0

感謝@Alex的回覆 –

1

Object.keys返回可枚舉對象上的鍵。

Object.create中定義的屬性在默認情況下是不可枚舉的(添加enumerable:truevalue一起會改變這一點)。

my_obj.foo定義的屬性是可枚舉的。

因此,Object.keys(my_obj)只返回["foo"],因爲這是該對象上唯一的枚舉屬性。

文檔:

+0

你能詳細解釋一下嗎? @NiettheDarkAbsol –

相關問題