对于in循环,返回字符串而不是对象

时间:2012-10-25 16:58:10

标签: javascript

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

代码:

var myObject = {


    myNestedObject : {

        key1 : value 1 

    }

}

然后如果我循环:

for(theObject in myObject){

    alert(typeof theObject);

}

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

为什么?

4 个答案:

答案 0 :(得分:6)

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

for(var key in obj){
    var theObject = obj[key];
}

答案 1 :(得分:2)

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

for(prop in Myobject){    
    alert(Myobject[prop]);
}

答案 2 :(得分:1)

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

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

  console.log(typeof theObject);
  //"object"
}

答案 3 :(得分:0)

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

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

如果你警告typeof theObject会给你对象的类型...字符串 - 因为这是关键...而不是对象......但是alering myObject[theObject]会导致{{ 1}}这是对象的类型。