diff --git a/src/scripts/polyfills/Function.prototype.bind.js b/src/scripts/polyfills/Function.prototype.bind.js new file mode 100644 index 0000000..f5fce7c --- /dev/null +++ b/src/scripts/polyfills/Function.prototype.bind.js @@ -0,0 +1,20 @@ +if (!Function.prototype.bind) { + Function.prototype.bind = function (oThis) { + if (typeof this !== "function") { + // closest thing possible to the ECMAScript 5 internal IsCallable function + throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable") + } + + var aArgs = Array.prototype.slice.call(arguments, 1) + var fToBind = this + var fNOP = function () {} + var fBound = function () { + return fToBind.apply(this instanceof fNOP && oThis ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments))) + } + + fNOP.prototype = this.prototype + fBound.prototype = new fNOP() + + return fBound + } +}