我正在使用来自underscore.js的_.bind,但它在IE8 / 9中无效。
我理解MDN有一个解决方法(MDN Polyfill - 但不确定这是否可以应用于下划线库,或者是否在下划线本身有解决方法
我想要实现的一个例子是:
window.onload = _.bind(function() {
this.product.quantityListing();
}, this);
编辑:我正在使用_.bind else的实例,并且它在IE8中工作 - 但是当我想检查IE中加载的窗口时,它只是不起作用。
答案 0 :(得分:3)
_.bind
和Function#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
绑定的闭包;一旦文档完成加载,它将调用具有预期上下文的函数。