你将如何实现一个javascript函数,以便它有一个被调用多少次的概念?

时间:2018-02-13 20:51:51

标签: javascript

console.log(foo()()); //it has to print '2'
console.log(foo()()()); //it has to print '3'
console.log(foo()()()()); //it has to print '4'

您如何实现function foo(){}来实现后一种行为?

以下是我尝试解决此问题的方法:

foo.i = 0;
function foo(){
  foo.i++;
  return foo;
}

var f = foo()()()();
console.log(f.i); //prints 4

但当然

var f = foo()()()();
console.log(f.i); //prints 4

不等于

console.log(foo()()()());

1 个答案:

答案 0 :(得分:3)

您可以使用内部函数来递增计数器并实现toString方法来获取计数。

如果期望值是基本类型,则调用

toString

function foo() {
    function x() { count++; return x; }

    var count = 1;
    x.toString = function () { return count; }
    return x;
}

console.log(foo());       // 1
console.log(foo()());     // 2
console.log(foo()()());   // 3
console.log(foo()()()()); // 4