Mootools类 - 对象属性上的Object.keys()

时间:2011-05-04 08:53:25

标签: 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
[]

第三行应该是:['banana','kiwi','strawberry'] 问题出在Mootools重置方法中,该方法创建一个以原始水果对象为原型的新对象。由于Object.keys迭代检查hasOwnProperty,它返回一个空数组。

关于如何获得预期输出的任何想法?

1 个答案:

答案 0 :(得分:5)

这将获得预期的输出:

var Garden  = new Class({
    fruits : {
        banana : 'yellow',
        kiwi : 'brown',
        strawberry : 'red'
    },
    initialize : function() {
        console.log(this.fruits);
        console.log(this.fruits.banana);
        var foo = Object.clone(this.fruits);
        console.log(Object.keys(foo));
    }
});
var g = new Garden();

然而 - 至于它为什么会发生 - 因为水果只继承了属性,当你克隆它时,它会将继承的属性克隆到新对象以取消引用它们