JavaScript函数重载

2020-06-24  本文已影响0人  六寸光阴丶

源代码

let addMethods = (object, name, fun) => {
  const old = object[name]
  object[name] = function () {
    if (fun.length === arguments.length) {
      return fun.apply(this, arguments)
    } else if (typeof old === 'function') {
      return old.apply(this, arguments)
    }
  }
}

let obj = {}

addMethods(obj, 'fun', function (params) {
  console.log(params)
})

addMethods(obj, 'fun', function (params1, params2) {
  console.log(params1, params2)
})

addMethods(obj, 'fun', function (params1, params2, params3) {
  console.log(params1, params2, params3)
})

测试

obj.fun(1)
obj.fun(1, 2)
obj.fun(1, 2, 3)
obj.fun(1)
obj.fun(1, 2)
obj.fun(1, 2, 3)

上一篇下一篇

猜你喜欢

热点阅读