bind vs emulate (v5)

Revision 5 of this benchmark created on


Setup

Function.prototype.bind2 = function bind2( that ) {
        var target = this;
        if ( typeof target != "function" ) {
            throw new TypeError();
        }
        var args = slice.call( arguments, 1 );
        var bound = function () {
            if ( this instanceof bound ) {
                var F = function() {};
                F.prototype = target.prototype;
                var self = new F;
    
                var result = target.apply( self, args.concat( slice.call( arguments ) ) );
                if ( Object( result ) === result ) {
                    return result;
                }
                return self;
            } else {
                return target.apply( that, args.concat( slice.call( arguments ) ) );
            }
        };
        return bound;
    };
    
    var i = { i: 0 };
    
    var f = function () {
      this.i++;
    };
    
    var binded = f.bind(i);
    var emulated = f.bind2(i);

Test runner

Ready to run.

Testing in
TestOps/sec
bind
binded();
ready
emulate
emulated();
ready

Revisions

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