function createFunOverLoad() {
const funMap = new Map()
console.log(funMap)
const funOverLoad = function (...args) {
const key = args.map(param => typeof param).join('-')
console.log(key)
const fn = funMap.get(key)
if (fn) {
return fn.apply(this, args)
}
return new Error('not match function')
}
funOverLoad.addFunImpl = function (...args) {
const fun = args.pop()
if (!fun || typeof fun !== 'function') {
return
}
const paramKeys = args.join('-')
funMap.set(paramKeys, fun)
}
return funOverLoad
}
const getUser = createFunOverLoad()
getUser.addFunImpl(() => console.log('no params'))
getUser()
getUser.addFunImpl('string', 'number', (name, age) => console.log('no params111111' + name + age))
getUser('aaaa', 12)