Skip to content
Snippets Groups Projects
phantom_bind_polyfill.js 1.1 KiB
Newer Older
  • Learn to ignore specific revisions
  • Laura Cappelli's avatar
    Laura Cappelli committed
    /////////////////////////////////////
    // Taken from ariya/phantomjs#10522
    //
    
    
    Function.prototype.bind = function bind(that) { // .length is 1
          var target = this;
          if (typeof target != "function") {
              throw new TypeError("Function.prototype.bind called on incompatible " + target);
          }
          var args = Array.prototype.slice.call(arguments, 1); // for normal call
          var bound = function () {
    
              if (this instanceof bound) {
    
                  var result = target.apply(
                      this,
                      args.concat(Array.prototype.slice.call(arguments))
                  );
                  if (Object(result) === result) {
                      return result;
                  }
                  return this;
    
              } else {
                  return target.apply(
                      that,
                      args.concat(Array.prototype.slice.call(arguments))
                  );
    
              }
    
          };
          function Empty() {};
          if(target.prototype) {
              Empty.prototype = target.prototype;
              bound.prototype = new Empty();
              Empty.prototype = null;
          }
          return bound;
      };