作为Javascript中函数的参数

时间:2014-10-28 08:50:28

标签: javascript oop

我试图实现一个将另一个函数作为参数的函数,并返回一个只能调用一次的函数的新版本。

对结果函数的后续调用应该没有效果(并且应该返回undefined)。

例如:

logOnce = once(console.log) 
logOnce("foo") // -> "foo" 
logOnce("bar") // -> no effect

1 个答案:

答案 0 :(得分:1)

您可以在要传递的函数对象上使用标志作为参数

function once(func){
  return function(){
    if(!func.performed){
      func.apply(this,arguments);
      func.performed = true;
    }    
  }
}

var logOnce = once(console.log);
logOnce("Test 1");
logOnce("Test 2");