下面是JS绑定的ES5填充。我不明白self .apply在绑定函数中。 我知道如何使用apply方法,但是在这种情况下,指向的self?它应该是一个
功能,但在这里自我看起来像一个对象。ES5填充绑定函数是Javascript
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;
};
}
我知道这是在这个时间点一个古老的问题,但它出现相当高的谷歌搜索分析。接受的答案相当具有误导性。我已经发布了一些新的答案和一些额外的细节。看看你是否感兴趣。 – bigtunacan 2013-12-31 20:42:56