IE8兼容我的javascript代码存在一些问题,我似乎无法用完。该代码在IE9 +,Chrome和FF中运行良好。我有一个backbone.js集合,它正在收听一系列其他骨干集合,以便对其模型进行更改。 IE 8在应用事件侦听器时发出错误。代码是;
for(var k in this.referenceTables){
this.listenTo(this.referenceTables[k], 'change', this.fetch);
}
和IE8(注意:IE8在IE8浏览器模式下,文档模式IE8标准)在控制台中返回错误对象不支持上面代码第2行的上的属性或方法。
上面的代码块位于主干collection.extend的初始化函数中。
this.referenceTables先前已在初始化函数中使用
指定this.referenceTables = options.referenceTables // options.referenceTables is an array of backbone collections
我有点难过所以任何想法都会非常感激!
答案 0 :(得分:2)
for...in
用于迭代对象的所有可枚举属性,如果要迭代数组中的值,referenceTables
是,则应使用正常for
循环。
for(var k = 0; k < this.referenceTables.length; k++){
问题是你的for...in
循环正在从数组对象中获取非数组项的其他东西,因此不是模型。
如果你在那里贴上console.log(k)
,你会发现它不仅仅是0...N
。