因为打印一个函数的时候会调用toString方法,所以我们重写toString方法,当需要打印函数的时候返回累加值,当作为函数调用时执行函数。
function add(a) {
// add函数调用时返回一个sum函数
// sum函数调用时返回一个sum函数
// 打印sum函数时调用sum函数的toString函数
function sum(b) {
a = a + b;
return sum;
}
// 此处重写sum函数的toString()方法 返回累加值a
sum.toString = function() {
return a;
}
return sum;
}
add(1); // 1
add(1)(2); // 3
add(1)(2)(3); // 6
add(1)(2)(3)(4); // 10
// 以此推类