forked from fanruan/fineui
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
1.1 KiB
29 lines
1.1 KiB
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, |
|
// 获取调用时(fBound)的传参.bind 返回的函数入参往往是这么传递的 |
|
aArgs.concat(Array.prototype.slice.call(arguments))); |
|
}; |
|
|
|
// 维护原型关系 |
|
if (this.prototype) { |
|
// Function.prototype doesn't have a prototype property |
|
fNOP.prototype = this.prototype; |
|
} |
|
fBound.prototype = new fNOP(); |
|
|
|
return fBound; |
|
}; |
|
} |