JavaScript中的方法重载实例


Posted in Javascript onMarch 16, 2015

.NET里面的方法重载用着的确很方便,哪Javascript里面能不能也哪样做呢?

Javasciprt里面本生是没有方法重载的功能,以前很多人的做法可能是直接少传参数过去,然后在根据参数是否为 “undefined” 未定义来决定怎么处理,从而实现类似方法重载的功能。

例如:

var showMessage = function(name,value,id){

    if(id != ”undefined”){

        alert(name+value+id);

    }

    else if(value != ”undefined”){

        alert(name + value);

    }

    else{

        alert(name);

    }

}
showMessage(”哈哈”);

showMessage(”哈哈”,”??”);

showMessage(”哈哈”,”??”,124124);

今天在Ajaxian上面看到了一篇关于Javascript方法重载的写法,它是能过另外一个方法来实现的。

看一下这个代码:

// addMethod - By John Resig (MIT Licensed)

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 );

  }

}

};
var UserInfo = function(){

    addMethod(this,”find”,function(){

        alert(”没有参数”);

    });
    addMethod(this,”find”,function(name){

        alert(”传入的参数是一个,叫 ”+name);

    });
    addMethod(this,”find”,function(name,value){

        alert(”传入了两个参数,一个叫 name=”+name+” 一个叫 value=”+value);

    });

};
var userinfo = new UserInfo();

userinfo.find();

userinfo.find('我是谁?');

userinfo.find('某某某','1512412514');

看,这样一来就简单了……
Javascript 相关文章推荐
js 学习笔记(三)
Dec 29 Javascript
js输出列表实现代码
Sep 12 Javascript
jQuery自定义事件的简单实现代码
Jan 27 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
Aug 24 Javascript
JavaScript事件类型中UI事件详解
Jan 14 Javascript
confirm确认对话框的实现方法总结
Jun 17 Javascript
JS+CSS3实现超炫的散列画廊特效
Jul 16 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
Sep 18 Javascript
vue cli 3.0 使用全过程解析
Jun 14 Javascript
对vux点击事件的优化详解
Aug 28 Javascript
vue使用recorder.js实现录音功能
Nov 22 Javascript
JavaScript高级程序设计之变量与作用域
Nov 17 Javascript
jquery中attr和prop的区别分析
Mar 16 #Javascript
JavaScript中扩展Array contains方法实例
Aug 23 #Javascript
JavaScript中消除闭包的一般方法介绍
Mar 16 #Javascript
jQuery实现的支持IE的html滑动条
Mar 16 #Javascript
JavaScript计算两个日期时间段内日期的方法
Mar 16 #Javascript
nw.js实现类似微信的聊天软件
Mar 16 #Javascript
JavaScript控制table某列不显示的方法
Mar 16 #Javascript
You might like
跟我学小偷程序之成功偷取首页(第三天)
2006/10/09 PHP
PHP 和 XML: 使用expat函数(三)
2006/10/09 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
2020/04/13 PHP
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
jquery 通过name快速取值示例
2014/01/24 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
react路由配置方式详解
2017/08/07 Javascript
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
简单明了区分escape、encodeURI和encodeURIComponent
2018/05/26 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
JavaScript枚举选择jquery插件代码实例
2020/11/17 jQuery
js实现扫雷源代码
2020/11/27 Javascript
Python 迭代器与生成器实例详解
2017/05/18 Python
python实现感知器算法详解
2017/12/19 Python
对python numpy数组中冒号的使用方法详解
2018/04/17 Python
Python全排列操作实例分析
2018/07/24 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
python验证身份证信息实例代码
2019/05/06 Python
Python 实现一个计时器
2020/07/28 Python
python爬虫搭配起Bilibili唧唧的流程分析
2020/12/01 Python
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
智能电子应届生求职信
2013/11/10 职场文书
先进工作者申报材料
2014/12/23 职场文书
2015年预算员工作总结
2015/05/14 职场文书
禁毒心得体会范文
2016/01/15 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL
彻底弄懂Python中的回调函数(callback)
2022/06/25 Python