Skip to content

Latest commit

 

History

History
60 lines (44 loc) · 1.28 KB

4.2-高阶函数-返回函数.md

File metadata and controls

60 lines (44 loc) · 1.28 KB

以一个函数作为返回结果。

忽略参数返回一个常量的函数:

repeatedly(3, function() {
   return "Foo";
}
  • 返回一个常量,几乎是函数式编程的一个设计模式,经常简称为k
  • 称其为:always
function always(VALUE) {
  return function() {
    return VALUE;
  }
}
  • 闭包会捕获一个值(或引用),并返回相同的值
var f = always(function() {})
f() === f() // ==> true
  • 每一个新的闭包都会捕获不一样的值
var g = always(function() {})

f() === g() // ==> false

always 这样的函数被称之为组合子(combinator).

这里的实现和ui5里的jQuery.sap.getter是完全一样的,但是任然没有完全明白它的实际用途。


接收一个方法,并在任何给定的对象上调用它。

function invoker(NAME, METHOD) {
  return function(target) {
    if (!existy(target)) fail("Must provide a target")
    
    var targetMethod = target[NAME],
        args = _.rest(arguments);
    
    return doWhen(existy(targetMethod) && METHOD === targetMethod), function() {
      return targetMethod.apply(target, args);
    });
  };
}

var rev = invoker('reverse', Array.prototype.reverse);
_map([[1, 2, 3], rev];