aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Thornton <[email protected]>2015-08-18 17:06:17 -0700
committerJacob Thornton <[email protected]>2015-08-18 17:06:17 -0700
commitf1827e5f9c37e9a344a8f7dd8ed269e774e83fce (patch)
tree0e60fbf43db03b10e9e347ee426d9fdb2bd77eed
parente07071416b500e911a0d4840bbc932e3d71421f9 (diff)
downloadbootstrap-f1827e5f9c37e9a344a8f7dd8ed269e774e83fce.tar.xz
bootstrap-f1827e5f9c37e9a344a8f7dd8ed269e774e83fce.zip
add polyfil for bind for tether.js
-rw-r--r--js/tests/unit/phantom.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/js/tests/unit/phantom.js b/js/tests/unit/phantom.js
index 3ed3b3ea3..2791bd841 100644
--- a/js/tests/unit/phantom.js
+++ b/js/tests/unit/phantom.js
@@ -70,3 +70,35 @@
})
}())
+
+
+// bind polyfill
+// shoutout mdn: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill
+
+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),
+ fToBind = this,
+ fNOP = function() {},
+ fBound = function() {
+ return fToBind.apply(this instanceof fNOP
+ ? this
+ : oThis,
+ aArgs.concat(Array.prototype.slice.call(arguments)));
+ };
+
+ if (this.prototype) {
+ // native functions don't have a prototype
+ fNOP.prototype = this.prototype;
+ }
+ fBound.prototype = new fNOP();
+
+ return fBound;
+ };
+}