美文网首页
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)

相关文章

  • 2.解决js中没有函数重载问题

    在js中没有重载: 相同名称的函数,最后一次声明的函数会覆盖之前声明的函数 解决js中没有重载的问题: 1.解决参...

  • JS知识点整理-3

    JS函数的重载 什么是重载? 方法名相同,参数不同 JS是否存在重载?--不存在,调用最后一个方法,把传递的参数保...

  • js函数重载

  • JS函数重载

    所谓函数重载(method overloading),就是函数名称一样,但是输入输出不一样。或者说,允许某个函数有...

  • js的重载

    问:什么是重载?答:同样的函数,不同样的参数个数。《JS高级程序设计》里是提到过函数是没有重载的,ts中有重载。但...

  • js没有重载

    重载函数 同名不同参数(类型和数量)的函数之间互称为重载函数。 理解参数 js中的参数不同于传统的编程语言中的参数...

  • arguments

    js函数不能像传统意义上那样实现函数重载。所谓的函数重载就是:为一个函数编写两个定义,只要这两个定义的签名(接受的...

  • TypeScript 学习笔记3 函数

    1.函数定义 1.1 js 函数定义 1.2 ts 函数定义 2.函数重载 Typescript从0到1-学习视频...

  • js基础(二)

    引用 引用:是一个指向对象实际位置的指针。 函数重载和类型检查 在java语言中直接支持函数的重载,但在js中没有...

  • js 函数的重载

    我们知道,很多编程语言都有函数的重载。 所谓的重载,看定义: 重载,简单说,就是函数或者方法有相同的名称,但是参数...

网友评论

      本文标题:js函数重载

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