Native bind vs jQuery.proxy vs Underscore bind (v52)

Revision 52 of this benchmark created on


Preparation HTML

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore-min.js">
</script>
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.9.3/dojo/dojo.js"></script>

Test runner

Ready to run.

Testing in
TestOps/sec
Native bind
var foo = (function(x) {
  return this + x;
}).bind(1);
foo(1);
ready
jQuery.proxy
var foo = jQuery.proxy(function(x) {
  return this + x;
}, 1);
foo(1);
ready
Underscore.js bind
var foo = _.bind(function(x) {
  return this + x;
}, 1);
foo(1)
ready
Without bind
var bar = function(x) {
  return this + x;
};
var foo = function(x) {
  return bar.call(1, x);
}
foo(1);
ready
Dojo lang.hitch
var foo = dojo.hitch(1, function(x) {
  return this + x;
});
foo(1)
ready
Function.prototype.context
!Function.prototype.context &&
(Function.prototype.context = function(contextObject) {
  var fn = this;

  return function() { return fn.apply(contextObject, arguments); };
});

!window.foo && (window.foo = function(x)
{
  return this + x;
}.context(1));

foo(1);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.