Поиск ключей объекта в Javascript

Я работаю над веб-приложением ExtJS и искал способ перечислить все имена собственных свойств объекта. Погуглить, Я быстро нашел некоторый справочный код в этом блоге . Теперь, когда я использую этот метод keys (), я обнаруживаю странное поведение при перечислении имен свойств объекта объектов. Пример кода:

keys = function(obj) {
    if (typeof obj != "object" && typeof obj != "function" || obj == null) {
        throw TypeError("Object.keys called on non-object");
    }
    var keys = [];
    for (var p in obj) 
        obj.hasOwnProperty(p) && keys.push(p);
    return keys;
};

var test = {}
test["nr1"] = {testid: 1, teststr: "one"};
test["nr2"] = {testid: 2, teststr: "two"};
test["nr3"] = {testid: 3, teststr: "three"};
for (var i in keys(test)) {
    console.log(i);
}

При запуске этого кода консоль выводит:

0
1
2
remove()

Итак, помимо трех ожидаемых имен свойств, в нем также отображается функция «remove ()». Это явно связано с ExtJS, потому что перечисление работает должным образом на пустой странице загрузки, отличной от ExtJS.

Кто-нибудь может объяснить мне, что именно делает здесь ExtJS? Есть ли лучший способ перечислить имена собственных свойств объекта?

Большое спасибо, помимо ожидаемых трех имен свойств, он также перечисляет функцию «remove ()». Это явно связано с ExtJS, потому что перечисление работает должным образом на пустой странице загрузки, отличной от ExtJS.

Кто-нибудь может объяснить мне, что именно делает здесь ExtJS? Есть ли лучший способ перечислить имена собственных свойств объекта?

Большое спасибо, помимо ожидаемых трех имен свойств, он также перечисляет функцию «remove ()». Это явно связано с ExtJS, потому что перечисление работает должным образом на пустой странице загрузки, отличной от ExtJS.

Кто-нибудь может объяснить мне, что именно делает здесь ExtJS? Есть ли лучший способ перечислить имена собственных свойств объекта?

Большое спасибо, wwwald

6
задан wwwald 13 May 2011 в 13:08
поделиться