2014-06-09 30 views
6

我在使用_.bind from underscore.js,但它不能在IE8/9内工作。下划线绑定在IE8中不起作用

我明白MDN有周围的工作(MDN Polyfill - 但不知道这是否可以应用到下划线库,或者是否有下划线本身

的例子为修复此我想要实现的是:

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

    this.product.quantityListing(); 
}, this); 

编辑:我使用的_.bind别的地方,它工作在IE8的实例 - 但它只是不工作时,我要检查的窗口,在IE加载

+0

为什么你在这里使用'new _.bind(fn)'? '新'在这里似乎毫无用处。 –

+0

下划线基本**是** polyfills的集合。 – Prinzhorn

+0

是的,这是我走下的路线,但我只是想避免这样做,并利用_.bind - 但需要继续前进,因此将不得不满足 –

回答

3

_.bindFunction#bind来自MDN的垫片做基本相同的事情。如果您使用MDN方法,则不需要使用Underscore.js方法。

您将使用MDN方法是这样的:

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

在另一方面,如果你使用的MDN垫片你有下划线在你的页面之前,下划线将在必要时使用匀版本。

因此,如果您在下划线之前包含垫片,则可以使用您喜欢的任何一种。我个人坚持使用Function#bind,因为它在本地支持它的浏览器中具有(非常轻微)更好的性能。

+1

值得注意的下划线将使用Function.bind if if present if在下划线之前加载MDN填充,然后下划线将使用该填充,因为它将创建Function.bind。如果代码库已经在使用它并且重构是不可能的,那么这很有用。 – GillesC

0

Underscore的整个前提是它确实适用于IE8以及其他浏览器,但是如果不是明显的错误,使用它的方式非常不寻常。你可以这样使用它:

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

即,没有new关键字。

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

+0

这是我的坏,新的不假设在那里 - 但它仍然无法正常工作 –