Skip to content

Instantly share code, notes, and snippets.

@dsingleton
Created October 25, 2011 11:10
Show Gist options
  • Save dsingleton/1312328 to your computer and use it in GitHub Desktop.
Save dsingleton/1312328 to your computer and use it in GitHub Desktop.
Polyfill for Function.prototype.bind
Function.prototype.bind=Function.prototype.bind||function(b){if(typeof this!=="function"){throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");}var a=Array.prototype.slice,f=a.call(arguments,1),e=this,c=function(){},d=function(){return e.apply(this instanceof c?this:b||window,f.concat(a.call(arguments)));};c.prototype=this.prototype;d.prototype=new c();return d;};
@Daniel-Hug
Copy link

For extra smallness, here are a few "clean" (JSHint friendly) optimizations :)

  • Array.prototype.slice can be replaced with []. -saves 19 characters
  • The second Function.prototype.bind can be replaced with (function(){}).bind. -saves 4 characters
  • The function expression ,c=function(){}, located in a comma separated list of variable declarations can be replaced with a function declaration (function c(){}), if it is placed before the variable declarations. -saves 1 character

See my fork: https://gist.github.com/Daniel-Hug/5682738

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment