在早期加载的文件中,我有一些代码行 borrowed from elsewhere on the internet ,它涵盖了没有内置Object.keys的旧版脚本解释器的情况 .
if (!Object.keys) {
Object.keys = function(object) {
var keys = [];
for (var o in object) {
if (object.hasOwnProperty(o)) {
keys.push(o);
}
}
return keys;
};
}
我认为这对于大型项目来说是两全其美的:简单的现代代码和对旧版本浏览器的向后兼容支持等 .
当Rob de la Cruz的Object.keys(obj)本身不可用时,它有效地将JW的解决方案纳入了该功能 .
6 回答
你可以使用:
Object.keys(obj)
例:
请参阅下面的参考资料以获取浏Firefox 4.20,Chrome 5,IE9支持它 . 如果您的浏览器不支持
Object.keys()
,则下面的链接包含您可以添加的代码段 .https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys
试试这个:
需要
hasOwnProperty
,因为可以将键插入dictionary
的原型对象中 . 但是您通常不希望列表中包含这些键 .例如,如果您这样做:
然后在
dictionary
上做for...in
循环,你会得到a
和b
,但你也会得到c
.这是for..in statement .
只是一个简单的注释,警惕使用for..in如果你使用一个库(jQuery,原型等),因为他们中的大多数都添加了创建对象(包括字典)的方法 .
这意味着当您遍历它们时,方法名称将显示为键 . 如果您使用的是库,请查看文档并查找可枚举的部分,您可以在其中找到用于迭代对象的正确方法 .
简单的JQUERY方式 .
这就是我使用的
DictionaryObj是你想要经历的javascript字典对象 . Value ,关键是在字典中它们的名称 .
我目前正在使用Rob de la Cruz的回复
在早期加载的文件中,我有一些代码行 borrowed from elsewhere on the internet ,它涵盖了没有内置Object.keys的旧版脚本解释器的情况 .
我认为这对于大型项目来说是两全其美的:简单的现代代码和对旧版本浏览器的向后兼容支持等 .
当Rob de la Cruz的Object.keys(obj)本身不可用时,它有效地将JW的解决方案纳入了该功能 .