IE8与我的JavaScript代码的兼容性有一些问题,我似乎无法解决。该代码可以在IE9 +,Chrome和FF中正常运行。我有一个bone.js集合,它正在侦听一系列其他骨架集合,以了解其模型的变化。 IE 8在应用事件侦听器时出现错误。该代码是;

for(var k in this.referenceTables){
   this.listenTo(this.referenceTables[k], 'change', this.fetch);
}


和IE8(注意:在IE8浏览器模式下为IE10,在文档模式下为IE8标准)在控制台中返回错误“对象不支持上述代码的第2行上的属性或方法'on'”。

上面的代码块在主干collection.extend的initialize函数中。

this.referenceTables之前在initialize函数中分配为

this.referenceTables = options.referenceTables // options.referenceTables is an array of backbone collections


我有些困惑,所以任何想法将不胜感激!

最佳答案

for...in用于遍历对象的所有可枚举属性,如果要遍历数组中的值(referenceTables是),则应使用普通的for循环。

for(var k = 0; k < this.referenceTables.length; k++){


问题在于您的for...in循环正在从数组对象中拾取不是数组项的其他东西,因此不是模型。

如果将console.log(k)放在其中,您会发现它不仅是0...N

07-26 04:16