 <p>You'll need to create your own binder function to do that. The main reason for having <code>.bind()</code> was to deal with the non-lexically defined <code>this</code>. As such, they didn't provide any way to use it without setting <code>this</code>.</p> <p>Here's a simple example you could use:</p> <pre><code>Function.prototype.argBind = function() { var fn = this; var args = Array.prototype.slice.call(arguments); return function() { return fn.apply(this, args.concat(Array.prototype.slice.call(arguments))); }; }; </code></pre> <p>This is pretty bare-bones, and doesn't deal with the function being invoked as a constructor, but you can add that support if desired.</p> <hr> <p>You could also enhance it to behave like the native <code>.bind()</code> unless <code>null</code> or <code>undefined</code> are passed as the first argument.</p> <pre><code>Function.prototype.argBind = function(thisArg) { // If `null` or `undefined` are passed as the first argument, use `.bind()` if (thisArg != null) { return this.bind.apply(this, arguments); } var fn = this; var args = Array.prototype.slice.call(arguments); return function() { return fn.apply(this, args.concat(Array.prototype.slice.call(arguments))); }; }; </code></pre>