查找javascript对象的子属性

时间:2010-07-29 01:22:07

标签: javascript properties attributes

我的代码就是这样:

var cem = { "name": "cem topkaya" };
f_PropertyBul(cem);
function f_PropertyBul(obj) {

    for (var prop in obj) {

        document.writeln(obj + " prop: " + prop + " propertyIsEnumerable:" + obj.propertyIsEnumerable(prop) + "<br/>");

        if (obj.propertyIsEnumerable(prop)) {            
            f_PropertyBul(obj[prop]);            
        }

    }
 }

我知道有很多问题和答案,但我不知道为什么我得到这个结果:

[object Object] prop: isim enumaret: true
cem topkaya prop: 0 enumaret: true
c prop: 0 propertyIsEnumerable: true
c prop: 0 propertyIsEnumerable: true
c prop: 0 propertyIsEnumerable: true
c prop: 0 propertyIsEnumerable: true
c prop: 0 propertyIsEnumerable: true
c prop: 0 propertyIsEnumerable: true
c prop: 0 propertyIsEnumerable: true
c prop: 0 propertyIsEnumerable: true
c prop: 0 propertyIsEnumerable: true
c prop: 0 propertyIsEnumerable: true
c prop: 0 propertyIsEnumerable: true
c prop: 0 propertyIsEnumerable: true
.
..
....

最后,我以字符串形式到达最后一个属性。但它仍然说它有财产可以真实。

我只想发送一个对象并搜索属性名称及其值。当它发现我只想破解搜索并返回我的JSON对象的一个​​属性。

1 个答案:

答案 0 :(得分:1)

字符串是可枚举的。例如:

var str = "string"
for (var c in str) {
   console.log(str[c]);
}

返回:

s
t
r
i
n
g

https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Object/propertyIsEnumerable

  

此方法可以确定对象中的指定属性是否可以由for ... in循环

枚举

如果要排除字符串,请在if语句中添加typeof prop !== "string"的检查。