This issue can cause seemingly random issues with other scripts and libraries. For instance, this issue is the cause of our Intercom integration not working.
This overwrites Function.prototype.bind() even for browsers that have it natively. Even worse, this polyfill is not correct per the spec. bind() can take any number of additional arguments to pass to the bound function: fun.bind(thisArg[, arg1[, arg2[, ...]]]).
Please (a) conditionally assign the polyfill, and (b) use a better polyfill:
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),
fToBind = this,
fNOP = function () {},
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;
};
This issue can cause seemingly random issues with other scripts and libraries. For instance, this issue is the cause of our Intercom integration not working.
kartograph.js / src / core / proj.coffee, line 22:
This overwrites
Function.prototype.bind()
even for browsers that have it natively. Even worse, this polyfill is not correct per the spec.bind()
can take any number of additional arguments to pass to the bound function:fun.bind(thisArg[, arg1[, arg2[, ...]]])
.Please (a) conditionally assign the polyfill, and (b) use a better polyfill: