美文网首页
js函数重载

js函数重载

作者: TouchMe丶 | 来源:发表于2020-08-05 21:28 被阅读0次
      var users = {
      values: ['zzy zhang', 'hq huang', 'wxr wei']
    }
    
    
    function addMethod (object, name, fn) {
      // 先把原来的object[name] 方法, 保存在old中
      var old = object[name]
    
      // 重新定义object[name]方法
      object[name] = function() {
        //如果函数需要的参数 和 实际传入的参数的个数相同,就直接调用fn
        if(fn.length === arguments.length) {
          return fn.apply(this, arguments)
    
          // 如果不相同,判断old 是不是函数,
          // 如果是就调用old, 也就是刚才保存的object[name] 方法
        } else if (typeof old === 'function') {
          return old.apply(this, arguments)
        }
      }
    }
    
    
    function find0() {
      return this.values
    }
    
    function find1(firstName){
      var ret = []
      for(var i = 0; i < this.values.length; i++) {
        if(this.values[i].indexOf(firstName) === 0) {
          ret.push(this.vaules[i])
        }
      }
      return ret
    }
    
    function find2(firstName, lastName) {
      var ret = []
      for(var i = 0; i < this.values.length; i++) {
        if(this.values[i] === (firstName + ' ' + lastName)) {
          ret.push(this.values[i])
        }
      }
      return ret
    }
    
    
    // 使用D
    addMethod(users, 'find', find0)
    addMethod(users, 'find', find1)
    addMethod(users, 'find', find2)
    
    

    相关文章

      网友评论

          本文标题:js函数重载

          本文链接:https://www.haomeiwen.com/subject/rowqcktx.html