// 1. 累加
function sum(arr){
return arr.reduce((pre,cur)=>{
return pre + cur
},0)
}
function foo(...args){
let sum1 = sum(args)
let fn = function(...arg) {
let sum2 = sum(arg)
return foo(sum1 +sum2)
}
// 核心内容,重写方法的tostring方法
//这里做了一个函数劫持,
//正常返回的是一个函数,并通过字符串的方式打印出来,
//所以打印的时候会调用toString方法,这里重写该方法,让返回求和结果
fn.toString=()=>{
return sum1
}
return fn
}
console.log(foo(1)(2)(3))
//2. 连接配置
function httpHandle(http){
let res = `${http}`
let fn = (host)=>{
return httpHandle(res + `${host}`)
}
fn.toString = ()=> {
return res
}
return fn
}
console.log(httpHandle('http://')('www.baidu.com')('/zys'))
console