]> git.ipfire.org Git - thirdparty/foundation/foundation-sites.git/commitdiff
adds fn.protoype.bind polyfill
authorzurbchris <chris@zurb.com>
Thu, 19 Nov 2015 06:56:39 +0000 (22:56 -0800)
committerzurbchris <chris@zurb.com>
Thu, 19 Nov 2015 06:56:39 +0000 (22:56 -0800)
js/foundation.core.js

index 07953509c6affe24badec57cb7e40e207b0c3459..01db9163237c05fa027e609c67e467b0454680d4 100644 (file)
@@ -300,14 +300,34 @@ $.fn.foundation = foundation;
       now: function(){ return Date.now() - this.start; }
     };
   }
-  // window.performance = (window.performance || {
-  //   start: Date.now(),
-  //   now: function(){
-  //       return Date.now() - this.start;
-  //   }
-  // });
 })();
+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;
+  };
+}
 // Polyfill to get the name of a function in IE9
 function functionName(fn) {
   if (Function.prototype.name === undefined) {