allRows[rowDiv.toString()] = rowDiv;
console.log('commence row' + allRows[rowDiv.toString()].phrases);
//not null
for(row in allRows) {
   console.log('for commence ' + row.phrases);
   //null
   console.log(row)
   //prints toString
}

rowDiv是一个具有“短语”属性的对象(我在其构造函数中将其定义为this.phrases = [],随后向其中添加了元素)。 allRows是一个包含所有rowDiv对象的对象(通过allRows [rowDiv.toString()]插入的对象= rowDiv)。 为什么“行”只给我toString而不是实际对象? 否则可能正在发生其他事情。

===============>>#1 票数:2

javascript中这种“ for each”循环的类型略有不同。 您必须执行以下操作:

for(row in allRows) {
   console.log('for commence ' + allRows[row].phrases);
   //null
   console.log(allRows[row])
   //no longer should print toString
}

===============>>#2 票数:1 已采纳

您只是在打印要查找的对象的

在您使用的字典中,您将toString()的结果用作键。

为了获得实际的对象,而不仅仅是toString()结果,您需要使用allRows[row]而不是row

因此,例如,通过此更改,您的代码将如下所示:

allRows[rowDiv.toString()] = rowDiv;
console.log('commence row' + allRows[rowDiv.toString()].phrases);
//not null
for(row in allRows) {
   console.log('for commence ' + row.phrases);
   //null
   console.log(allRows[row]); // CHANGE MADE HERE
   //prints toString
}

===============>>#3 票数:0

也可以使用for...of https://developer.mozilla.org/enUS/docs/Web/JavaScript/Reference/Statements/for...of

allRows[rowDiv.toString()] = rowDiv;
console.log('commence row' + allRows[rowDiv.toString()].phrases);
//not null
for(row of allRows) {
   console.log('for commence ' + row.phrases);
   //null
   console.log(row)
   //prints toString
}

  ask by michaelAdam translate from so

未解决问题?本站智能推荐: