0

我有包含嵌套对象的 javascript 对象。我想使用“for in”循环来迭代这些,但这会返回一个字符串而不是一个对象?

代码:

var myObject = {


    myNestedObject : {

        key1 : value 1 

    }

}

然后如果我循环:

for(theObject in myObject){

    alert(typeof theObject);

}

这将返回字符串“myNestedObject”,但不返回对象本身。

为什么?

4

4 回答 4

6

theObject是属性键。你想要的可能是:

for(var key in obj){
    var theObject = obj[key];
}
于 2012-10-25T17:02:09.320 回答
2

这就是for...in循环的工作方式。而是写:

for(prop in Myobject){    
    alert(Myobject[prop]);
}
于 2012-10-25T17:00:11.910 回答
1

for...in循环遍历对象的属性。

for(key in myObject){
  var theObject = myObject[key]
  //theObject = { key1: value 1 }

  console.log(typeof theObject);
  //"object"
}
于 2012-10-25T17:00:26.450 回答
0

如果您只需要自己的属性,在您的情况下嵌套对象 - 不是继承的 - 你应该这样做

for(theObject in myObject){
  if (myObject.hasOwnProperty(theObject)) {
     alert(typeof myObject[theObject]);
  }
}

如果你提醒 typeoftheObject会给你对象的类型......字符串 - 因为这是关键......不是对象......但是myObject[theObject]会导致警报object是对象的类型。

于 2012-10-25T17:16:20.443 回答