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脚本
Nov 01 Javascript
一种新的javascript对象创建方式Object.create()
Dec 28 Javascript
Bootstrap表单Form全面解析
Jun 13 Javascript
全面了解addEventListener和on的区别
Jul 14 Javascript
Webpack打包慢问题的完美解决方法
Mar 16 Javascript
解决option标签selected="selected"属性失效的问题
Nov 06 Javascript
JS实现非首屏图片延迟加载的示例
Jan 06 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
Nov 30 Javascript
node和vue实现商城用户地址模块
Dec 05 Javascript
基于Vue SEO的四种方案(小结)
Jul 01 Javascript
基于JS判断对象是否是数组
Jan 10 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
Jul 20 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
PHP中创建并处理图象
2006/10/09 PHP
PHP 操作文件的一些FAQ总结
2009/02/12 PHP
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
PHP使用Redis替代文件存储Session的方法
2017/02/15 PHP
Laravel框架中自定义模板指令总结
2017/12/17 PHP
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
jQuery去掉字符串起始和结尾的空格(多种方法实现)
2013/04/01 Javascript
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
2016/02/19 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
vue-router懒加载速度缓慢问题及解决方法
2018/11/25 Javascript
js的各种数据类型判断的介绍
2019/01/19 Javascript
JS事件流与事件处理程序实例分析
2019/08/16 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
2020/05/12 Javascript
python赋值操作方法分享
2013/03/23 Python
python字典多条件排序方法实例
2014/06/30 Python
Python实现的检测网站挂马程序
2014/11/30 Python
Python实现监控程序执行时间并将其写入日志的方法
2015/06/30 Python
python getopt详解及简单实例
2016/12/30 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
分享8点超级有用的Python编程建议(推荐)
2019/10/13 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
python利用 keyboard 库记录键盘事件
2020/10/16 Python
使用CSS3编写灰阶滤镜来制作黑白照片效果的方法
2016/05/09 HTML / CSS
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
Tomcat中怎么使用log4j输出所有的log
2016/07/07 面试题
在Java开发中如何选择使用哪种集合类
2016/08/09 面试题
大学社团活动总结
2014/04/26 职场文书
干部个人考察材料
2014/12/24 职场文书
Python中zipfile压缩包模块的使用
2021/05/14 Python
JavaScript ES6的函数拓展
2022/01/18 Javascript
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang