美文网首页
JavaScript函数重载

JavaScript函数重载

作者: 孙雪冬 | 来源:发表于2017-07-24 14:52 被阅读4次

转载自:作者Fundebug以及本文地址:https://blog.fundebug.com/2017/07/24/javascript_metho_overloading/

function addMethod(object, name, fn)
{
    var old = object[name];
    object[name] = function()
    {
        if (fn.length == arguments.length)
            return fn.apply(this, arguments);
        else if (typeof old == 'function')
            return old.apply(this, arguments);
    };
}
// 不传参数时,返回所有name
function find0()
{  
    return this.names;
}
// 传一个参数时,返回firstName匹配的name
function find1(firstName)
{  
    var result = [];  
    for (var i = 0; i < this.names.length; i++)
    {    
        if (this.names[i].indexOf(firstName) === 0)
        {      
            result.push(this.names[i]);    
        }  
    }  
    return result;
}
// 传两个参数时,返回firstName和lastName都匹配的name
function find2(firstName, lastName)
{ 
    var result = [];  
    for (var i = 0; i < this.names.length; i++)
    {    
        if (this.names[i] === (firstName + " " + lastName))
        {      
            result.push(this.names[i]);    
        }  
    }  
    return result;
}
function Users()
{
    addMethod(Users.prototype, "find", find0);
    addMethod(Users.prototype, "find", find1);
    addMethod(Users.prototype, "find", find2);
}
var users = new Users();
users.names = ["John Resig", "John Russell", "Dean Tom"];
console.log(users.find()); // 输出[ 'John Resig', 'John Russell', 'Dean Tom' ]
console.log(users.find("John")); // 输出[ 'John Resig', 'John Russell' ]
console.log(users.find("John", "Resig")); // 输出[ 'John Resig' ]
console.log(users.find("John", "E", "Resig")); // 输出undefined

相关文章

  • JavaScript 函数重载 浅析

    什么是函数重载? 首先想声明下,什么是函数重载,javascript中不存在函数重载的概念,(其实是个伪命题)但一...

  • JavaScript函数重载

    说明 JavaScript 中没有真正意义上的函数重载。 函数重载 函数名相同,函数的参数列表不同(包括参数个数和...

  • JavaScript 函数重载

    概念 重载是指函数或者方法有相同的名称,但是参数个数或类型不相同的情形,这样的同名不同参的函数或者方法之间,互相称...

  • JavaScript函数重载

    转载自:作者Fundebug以及本文地址:https://blog.fundebug.com/2017/07/24...

  • JavaScript函数重载

    JQuery常用方法 $('.test') $('.test','td') $(['.test', 'td']) ...

  • JavaScript函数重载

    源代码 测试

  • 初识JavaScript函数Arguments模拟重载

    在 JavaScript 中并没有重载函数的功能,但每个函数中的 Arguments 对象可以模拟重载的实现。 1...

  • 函数迈出三小步(三)

    六、函数重载 6.1 JavaScript支持重载吗? 重载在通常的面向对象语言中这样定义:方法名相同参数列表不...

  • 02-JavaScript

    一、基础 1.函数的arguments 其实Javascript并没有重载函数的功能,但是Arguments对象能...

  • JS实现函数重载

    重载 做过后端的,可能有函数重载的概念 但是在JavaScript中不存在重载,如果方法名一样的话,后面的会把前面...

网友评论

      本文标题:JavaScript函数重载

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