我正在使用ExtJS web應用程序,並正在尋找一種方法來列出對象自己的所有屬性名稱。谷歌搜索,我很快在this blog找到一些參考代碼。現在,當使用這個keys()方法時,當枚舉對象的對象的屬性名稱時,我發現一些奇怪的行爲。示例代碼:在Javascript中查找對象鍵
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()
所以,關於預期的3個屬性名稱的頂部,它還列出了「刪除()」函數。這顯然與ExtJS有關,因爲枚舉在空白的非ExtJS加載頁面上按預期工作。
任何人都可以解釋我ExtJS在這裏做什麼?有沒有更好的方法來枚舉對象自己的屬性名稱?
多謝, wwwald
ExtJS的似乎已經增加了一個功能到Array原型 – 2011-05-13 13:17:02