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()()()());
答案 0 :(得分:3)
您可以使用内部函数来递增计数器并实现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