【发布时间】:2013-09-24 13:47:43
【问题描述】:
我正在编写一个开源 javascript 库,并且我大量使用.bind() 方法,因为我认为面向对象的代码看起来更清晰。 (值得商榷)
示例
A1:
var that = this;
setTimeout(function () {
that.method();
}, 0);
对
B1:
setTimeout(this.method.bind(this), 0);
或者,更实用的代码部分
A2:
remoteDataSource.getData(function (a, b, c, d) {
obj.dataGetter(a, b, c, d);
})
vs B2:
remoteDataSource.getData(obj/* or prototype */.dataGetter.bind(obj));
我在旧版浏览器中使用非原生 bind,一切都很完美,直到我打开 jsperf benchmark for bind。
使用bind 的代码看起来慢了 100 倍。现在,在重写我所有的库之前,我有一个问题要问那些熟悉 javascript 引擎的人:
作为新功能,bind 是否有可能得到优化
很快,还是因为 JavaScript 架构限制没有机会?
【问题讨论】:
-
最好的解决方案之一是:jsperf.com/bind-vs-emulate/6
标签: javascript performance v8 spidermonkey late-binding