下划线绑定在IE8中不起作用

时间:2014-06-09 11:32:30

标签: javascript jquery internet-explorer-8 underscore.js

我正在使用来自underscore.js的_.bind,但它在IE8 / 9中无效。

我理解MDN有一个解决方法(MDN Polyfill - 但不确定这是否可以应用于下划线库,或者是否在下划线本身有解决方法

我想要实现的一个例子是:

window.onload = _.bind(function() { 

     this.product.quantityListing();
}, this);
编辑:我正在使用_.bind else的实例,并且它在IE8中工作 - 但是当我想检查IE中加载的窗口时,它只是不起作用。

2 个答案:

答案 0 :(得分:3)

来自MDN的

_.bindFunction#bind垫片基本上做同样的事情。如果使用MDN方法,则无需使用Underscore.js方法。

您可以像这样使用MDN方法:

window.onload = (function() {
    this.product.quantityListing();
}).bind(this);

另一方面,如果您在页面中包含Underscore之前使用MDN垫片,则Underscore将在必要时使用垫片版本。

因此,如果您在Underscore之前加入垫片,您可以使用您喜欢的任何一个。我个人坚持使用Function#bind,因为它在本机支持它的浏览器中(非常轻微)有更好的性能。

答案 1 :(得分:0)

Underscore的整个前提是它 可以为IE8和其他浏览器工作,但是你使用它的方式非常不寻常,如果不是完全错误的话。你可以像这样使用它:

window.onload = _.bind(function() {
    this.product.quantityListing();
}, this);

即。没有new关键字。

_.bind()的结果是this绑定的闭包;一旦文档完成加载,它将调用具有预期上下文的函数。