Array.prototype的方法原本只能用来操作array对象,但用call和apply可以把任意对象当做this传入这个方法,从而实现泛化。
Function.prototype.uncurrying = function(){
var self = this;//保留this指针
return function(){
var obj = Array.prototype.shift.call(arguments);
return self.apply(obj, arguments);
};
};
var push = Array.prototype.push.uncurrying();
这样就实现了push函数不仅仅操作array对象