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 相关文章推荐
jQuery对象和DOM对象使用说明
Jun 25 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
Aug 28 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
Feb 12 Javascript
Jquery弹出层插件ThickBox的使用方法
Dec 09 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
Jan 13 Javascript
JavaScript学习笔记之JS事件对象
Jan 22 Javascript
九种原生js动画效果
Nov 11 Javascript
详解ES6中的let命令
Apr 05 Javascript
jQuery实现表单动态添加数据并提交的方法
Jul 19 jQuery
使用node.js实现微信小程序实时聊天功能
Aug 13 Javascript
解决vue-cli 打包后自定义动画未执行的问题
Nov 12 Javascript
微信小程序自定义导航栏(模板化)
Nov 15 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
欧美媒体选出10年前最流行的17部动画
2017/01/18 日漫
菜鸟学PHP之Smarty入门
2007/01/04 PHP
PHP和XSS跨站攻击的防范
2007/04/17 PHP
使用CodeIgniter的类库做图片上传
2014/06/12 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
php中解析带中文字符的url函数分享
2015/01/20 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
2020/06/02 PHP
JavaScript延迟加载
2021/03/09 Javascript
Ajax,UTF-8还是GB2312 eval 还是execScript
2008/11/13 Javascript
菜鸟javascript基础资料整理3 正则
2010/12/06 Javascript
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
node.js入门实例helloworld详解
2015/12/23 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
微信小程序 弹幕功能简单实例
2017/02/14 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
mock.js模拟数据实现前后端分离
2019/07/24 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
python中 chr unichr ord函数的实例详解
2017/08/06 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
python将时分秒转换成秒的实例
2019/12/07 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
Python截图并保存的具体实例
2021/01/14 Python
CSS3哪些新特性值得称赞
2016/03/02 HTML / CSS
使用 css3 实现圆形进度条的示例
2017/07/05 HTML / CSS
优秀英语专业毕业生求职信
2013/11/23 职场文书
民生工作实施方案
2014/05/31 职场文书
市场调查策划方案
2014/06/10 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python