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
。