javascript迭代对象 - 第一个元素未定义

时间:2012-11-10 20:26:02

标签: javascript object undefined loops

我只是使用javascript for(key in obj)语法迭代一个对象:

var myObj = { id:'1', number:'2', name: 'my' };

var i, item;
for (i in myObj) {
    item = myObj[i];
}

我在firebug调试器(firefox)中认识到第一次循环迭代将i设置为undefined,而第二次迭代将i设置为'id'。我的代码中存在一些问题,因为这种行为。第一次迭代给出undefined是否正常?它是否与JSON表示法有关,缺少原型等?

1 个答案:

答案 0 :(得分:0)

似乎工作得非常好。但是,您可能希望使用.hasOwnProperty()来确保该属性属于该对象而不是继承:

var myObj = { id: "1", number: "2", name: "my" };
var i,item;
for (i in myObj) {
     if (myObj.hasOwnProperty(i)) item = myObj[i];
}

通常,本机原型方法不会被枚举,只是因为它们不可枚举。但是,如果您使用的是Prototype或MooTools等框架,则会在循环中枚举和查看它们添加的方法。 .hasOwnProperty()确保忽略它们。