Класс Mootools - Object.keys () для свойства объекта - PullRequest
4 голосов
/ 04 мая 2011

Рассмотрим этот простой класс 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
[]

Третья строка должна быть: ['банан', 'киви', 'клубника'] Проблема заключается в методе сброса Mootools, который создает новый объект с исходным объектом Fruit в качестве прототипа. Поскольку Object.keys выполняет итерацию проверки hasOwnProperty, он возвращает пустой массив.

Есть идеи, как получить ожидаемый результат?

1 Ответ

5 голосов
/ 04 мая 2011

это даст вам ожидаемый результат:

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

однако - относительно того, почему это происходит, - потому что у фруктов есть только унаследованные свойства, когда вы клонируете его, он клонирует унаследованные свойства новому объекту, чтобы разыменовать их

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...