所以我想知道哪个更快绑定或应用?有具体的证据吗(我在 jsperf 上玩了大约一个小时,下面回答)。
问问题
126 次
1 回答
2
http://jsperf.com/apply-verses-bind/3
如您所见,我已经运行了几种情况,但事实证明,包装函数并在作用域上调用函数是最快的(大约比bind
or快 2 倍apply
)。
对于那些懒得检查 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]();
}
}
};
和繁荣,超级绑定:)
于 2013-05-28T14:39:50.847 回答