使用MDN结合填充物是否存在风险?

时间:2013-03-18 13:53:44

标签: javascript polyfills

我开发了一个需要bind方法的Javascript库。 不幸的是,IE8不支持bind

有一个填充on the MDN website,效果很好。

我的问题是: 此polyfill与其他Javascript库之间是否存在问题或可能存在不兼容性?

在任何情况下都可以安全使用?

2 个答案:

答案 0 :(得分:6)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Compatibility

对我而言,与本地bind最明显的区别是:

恕我直言,如果你只使用JavaScript的“好部分”,而不是开发某些框架的核心(对于IE8?),你不应该面对这个polyfill的任何问题。

答案 1 :(得分:2)

答案几乎就在MDN页面上:

“如果你选择使用这个部分实现,你不能依赖那些行为偏离ECMA-262,第5版的情况!不过要小心(并且可能需要额外修改以满足特定需求),实现可能是根据规范广泛实现bind()的时间的合理桥梁。“

MDN垫片没有任何问题。但是,如果您选择使用他们的垫片,请确保它不能被其他库覆盖。我刚才有一个问题,Strophe正在做这件事并用另一个替换一个垫片。

我倾向于使用下划线来覆盖这样的东西,但还有其他选项,如es5shim。使用下划线,您有一个名为(您猜对了)的方法' .bind',并且与MDN的垫片(使用'new'调用)略有不同。 Underscore还有一个很好的方法叫做“ .partial”,在你不想改变'this'的值但部分应用参数的情况下这个方法非常有用。

我在这里提出的观点是,不是填充,而是查看在库中正确保护/封装的内容。如果您的目标是IE8等浏览器,那么您在任何情况下都需要不止一个垫片。

最后,并不是那么重要的检查性能测试: http://jsperf.com/browser-vs-es5-shim-vs-mdn-shim