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 相关文章推荐
JavaScript对象、属性、事件手册集合方便查询
Jul 04 Javascript
js保存当前路径(cookies记录)
Dec 14 Javascript
IE下JS读取xml文件示例代码
Aug 05 Javascript
Web开发必知Javascript技巧大全
Feb 23 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
May 12 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
May 21 Javascript
jsonp跨域请求实现示例
Mar 13 Javascript
js实现移动端轮播图效果
Dec 09 Javascript
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
Nov 28 Javascript
jquery.picsign图片标注组件实例详解
Feb 02 jQuery
React Native自定义控件底部抽屉菜单的示例
Feb 08 Javascript
Vue数据双向绑定的深入探究
Nov 27 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
Zend Framework教程之Zend_Controller_Plugin插件用法详解
2016/03/07 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
js URL参数的拼接方法比较
2012/02/15 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
轻松实现javascript图片轮播特效
2016/01/13 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
ie下js不执行的几种可能
2017/02/28 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
[58:18]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Mineski
2018/03/30 DOTA
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
python获取标准北京时间的方法
2015/03/24 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
Python 实现递归法解决迷宫问题的示例代码
2020/01/12 Python
Python 分布式缓存之Reids数据类型操作详解
2020/06/24 Python
浅谈TensorFlow中读取图像数据的三种方式
2020/06/30 Python
python中温度单位转换的实例方法
2020/12/27 Python
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
综合素质的自我鉴定
2013/10/07 职场文书
大学四年学习的自我评价分享
2013/12/09 职场文书
庆祝国庆节标语
2014/10/09 职场文书
个人租房协议书(范本)
2014/10/14 职场文书
2014年销售工作总结
2014/12/01 职场文书
房租涨价通知
2015/04/23 职场文书
Nginx报404错误的详细解决方法
2022/07/23 Servers