我遇到了一个最奇怪的问题,试图使用(object.property中的var i)立即失败,但Firebug向我显示了该对象并且看起来形状正确。我能够一直迭代对象,我不知道这个对象有什么不同。
这是Firebug显示的对象。 cTags是一个带有属性“tags”的对象,它本身包含属性,每个属性都是一个数组:
Firebug跟踪输出:
cTags.tags Object { question=[2], template=[2]}
“tags”属性的键应该是“question”和“template”,firebug会显示它们,如果我展开cTags.tags的firebug轨迹:
question ["q1", "q2"]
template ["Activity1", "Course Templates"]
然而当Firebug遇到我的for,它立即死亡,没有错误,只是在这句话之后跳过:
for( var i in cTags.tags ){
if( cTags.tags.hasOwnProperty(i)){
第一个语句后 i
未定义。然而,我甚至可以在Firebug中跟踪hasOwnProperty函数:
cTags.tags.hasOwnProperty("template") true
我觉得我错过了一些非常愚蠢的东西,但它是什么?怎么会失败,但Firebug告诉我,它应该是好的去?什么会导致i
未定义?
[编辑]
它实际上在hasOwnProperty调用上死亡。那么,当Firebug表明它确实具有这些属性时,怎么可能呢?