xxleyi / learning_list

聚集自己的学习笔记
11 stars 3 forks source link

JS 中实现偏函数 #198

Open xxleyi opened 4 years ago

xxleyi commented 4 years ago

竟然使用到了很多技能点...

var partial = function() {
  const fn = arguments[0];
  const args = Array.prototype.slice.call(arguments, 1);

  // Return a function that calls fn
  return function() {
    var remainingArgs = Array.prototype.slice.call(arguments);
    return fn.apply(this, args.concat(remainingArgs));
 }
}

粗略列一下:

fn.call(this, arg1, arg2);
fn.apply(this, [arg1, arg2]);

call 是按位置参数依次传递,apply 是将所有参数构成一个列表统一传递。为什么会有这种区别?

回头反思:JS中实现 curry 函数的常见方法里,是顺便实现了偏函数的