4
Object.keys()考慮這個簡單Mootools的類:Mootools的類 - 對對象屬性
var Garden = new Class({
fruits : {
banana : 'yellow',
kiwi : 'brown',
strawberry : 'red'
},
initialize : function() {
console.log(this.fruits);
console.log(this.fruits.banana);
console.log(Object.keys(this.fruits));
}
});
var g = new Garden;
輸出(在Chrome控制檯):
reset.F
yellow
[]
第三行應爲:['香蕉','kiwi','strawberry'] 該問題位於Mootools重置方法中,該方法以原始水果對象爲原型創建一個新對象。由於Object.keys迭代檢查hasOwnProperty,它將返回一個空數組。
有關如何獲得預期輸出的任何想法?
你也可以將對象包裝在一個數組中,例如。水果:[{無論}],它會工作。這對我來說似乎是一個在mootools中的錯誤。我正在使用Mootools 1.4.5 – hobberwickey 2012-04-17 12:58:47
它在mootools中的錯誤如何?這是簡單的對象繼承原型鏈。 'optionsObj = {foo:「bar」}','constructorObj:{options:optionsObj}' - 通過取消引用傳遞給原型。但從原型到實例都是通過引用來實例繼承的選項對象。 'instance.options == constructor.prototype.options' so:'constructor.prototype.options.foo =「foo」;' - >'instance.options.foo ===「foo」;'因爲它在原型鏈上。請參閱http://jsfiddle.net/d4VLw/ – 2012-04-17 13:46:00
以進一步說明 - 請參閱何時使用合併選項對象的setOptions:http://jsfiddle.net/d4VLw/1/,並在此之前,對象鍵返回空:http://jsfiddle.net/d4VLw/2/ – 2012-04-17 14:03:56