在这样的咖喱函数中:
var curry = function() {
var slice = Array.prototype.slice,
args = slice.call(arguments),
fn = args.shift();
return function(){
return fn.apply(null, args.concat(slice.call(arguments)));
};
};
之间有什么区别吗this
?我没有看到它可以产生影响的情况。null
fn.apply
编辑 :
感谢这个答案,我认为现在已经很清楚了,这是我为理解它而制作的一个小例子:
function msg() {
console.log(this.name);
}
var foo = { name: "foo"};
var msg_this = curry_this(msg);
var msg_null = curry_null(msg);
msg_this(); //msg.call(null) -> undefined
msg_null(); //msg.call(null) -> undefined
msg_this.call(foo); //msg.call(foo) -> foo
msg_null.call(foo); //msg.call(null) -> undefined
与curry_this
返回fn.apply(this,...
和curry_null
返回fn.apply(null...