如何列出 JavaScript 对象的属性?
2022-08-29 22:12:54
假设我创建了一个对象,如下所示:
var myObject =
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"};
检索属性名称列表的最佳方法是什么?即,我想以一些可变的“键”结束,这样:
keys == ["ircEvent", "method", "regex"]
假设我创建了一个对象,如下所示:
var myObject =
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"};
检索属性名称列表的最佳方法是什么?即,我想以一些可变的“键”结束,这样:
keys == ["ircEvent", "method", "regex"]
在现代浏览器(IE9+、FF4+、Chrome5+、Opera12+、Safari5+)中,您可以使用内置的 Object.keys 方法:
var keys = Object.keys(myObject);
上面有一个完整的polyfill,但简化的版本是:
var getKeys = function(obj){
var keys = [];
for(var key in obj){
keys.push(key);
}
return keys;
}
或者替换为,以允许您调用任何对象。扩展原型有一些副作用,我不建议这样做。var getKeys
Object.prototype.keys
.keys()
正如 slashnick 所指出的,您可以使用 “for in” 构造来循环访问对象的属性名称。但是,您将迭代对象原型链中的所有属性名称。如果只想迭代对象自己的属性,则可以使用 Object#hasOwnProperty() 方法。因此具有以下特点。
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
/* useful code here */
}
}