所以我想知道哪个是更快的绑定还是应用?有没有具体的证明(我在jsperf上玩了大约一个小时,回答如下)。
答案 0 :(得分:2)
http://jsperf.com/apply-verses-bind/3
正如您所看到的,我已经运行了几种情况,但事实证明,包装函数并在范围上调用函数是最快的(比bind
或apply
快约2倍)。 / p>
对于那些懒得查看jsperf的人来说,结果就是这样。
var myObject = {
count: 0,
fn: function() {
this.count += 1;
}
};
var bindFn = myObject.fn.bind(myObject);
var applyFn = (function(fn, scope) {
return function() {
fn.apply(scope, []);
}
})(myObject.fn, myObject);
var unboundFn = myObject.fn;
var preBound = (function(fn, scope) {
return function() {
scope[fn]();
};
})('fn', myObject);
preBound
以大约2倍的速度获胜。那么我想到了一个很棒的实用课程。
return {
superBind: function(fn, scope) {
return function() {
scope[fn]();
}
}
};
繁荣,超级绑定:)