Я работаю над веб-приложением 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 делает здесь?Есть ли лучший способ для перечисления имен собственных свойств объекта?
Спасибо большое, wwwald