X

曜彤.手记

随手写写,关于互联网技术、产品与创业

“函数柯里化”常见使用场景记录


这里记录一下前端常用的“函数柯里化”使用场景。总的来说,柯里化常常用来进行函数的“延迟计算”与“参数复用”,甚至在某些场合需要动态创建函数的情况下,都可以使用函数的“柯里化”。

1、浏览器事件绑定函数:

属于延迟计算类型,第一次计算为判断浏览器支持类型,然后返回一个函数用来后续的计算过程。因此第一次的计算可以被复用,不需要再次调用。

var addEvent = (function() {
  if (window.addEventListener) {
    return function(el, sType, fn, capture) {
      el.addEventListener(sType, function(e) {
        fn.call(el, e);
      }, (capture));
    };
  } else if (window.attachEvent) {
    return function(el, sType, fn, capture) {
      el.attachEvent("on" + sType, function(e) {
        fn.call(el, e);
      });
    };
  }
})();

2、增量处理函数:

属于参数复用和延迟计算的混合。fn 作为 Handler 会在最后接收到所有传入过的参数,然后做统一的处理。_args 由于闭包会保存所有已传入过的参数。

var currying = function(fn) {
  var _args = [];
  return function() {
    if (arguments.length === 0) {
      return fn.apply(this, _args);
    }
    Array.prototype.push.apply(_args, [].slice.call(arguments));
    return arguments.callee;
  }
};


这是文章底线,下面是评论
  暂无评论,欢迎勾搭 :)