1234567891011121314151617181920212223242526272829303132333435363738394041 |
- /////////////////////////////////////
- // 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;
- };
|