使用Prototype在JavaScript中遍历对象的每个属性?

有没有办法使用Prototype JavaScript框架来遍历对象的每个属性?

这是情况:我得到一个JSON的AJAX响应,看起来像这样:

{foo: 1, bar: 2, barobj: {75: true, 76: false, 85: true}} 

如果我将json响应评估为variablesresponse ,我希望能够遍历response.barobj对象中的每个属性,以查看哪些索引是真的,哪些是假的。

Prototype有Object.keys()Object.values()但奇怪的是没有一个简单的Object.each()函数! 我可以把Object.keys()和Object.values()的结果交叉引用,但是这是一种破解,我确信有一个正确的方法来做到这一点!

你必须首先将你的对象文字转换成一个Prototype Hash :

 // Store your object literal var obj = {foo: 1, bar: 2, barobj: {75: true, 76: false, 85: true}} // Iterate like so. The $H() construct creates a prototype-extended Hash. $H(obj).each(function(pair){ alert(pair.key); alert(pair.value); }); 

这里不需要Prototype:JavaScript有for..in循环。 如果你不确定没有人与Object.prototype ,请检查hasOwnProperty()以及

 for(var prop in obj) { if(obj.hasOwnProperty(prop)) doSomethingWith(obj[prop]); } 

您应该迭代键并使用方括号来获取值。

请参阅: 如何枚举JavaScript对象的属性?

编辑:显然,这使得问题重复。