下面是用于 JS 绑定的 ES5 垫片。我不明白 self .apply 在绑定函数中。我知道如何使用 apply 方法,但是在这种情况下self指向哪里?它应该是一个
函数,但这里self看起来像一个对象。
if ( !Function.prototype.bind ) {
Function.prototype.bind = function( obj ) {
var slice = [].slice,
args = slice.call(arguments, 1),
self = this,
nop = function () {},
bound = function () {
return self.apply( this instanceof nop ? this : ( obj || {} ), // self in this line is supposed
to // represent a function ?
args.concat( slice.call(arguments) ) );
};
nop.prototype = self.prototype;
bound.prototype = new nop();
return bound;
};
}