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 checkbox全选、取消全选、删除功能代码
Dec 19 Javascript
Javascript 代码也可以变得优美的实现方法
Jun 22 Javascript
Javascript 汉字字节判断
Aug 01 Javascript
jquery $.ajax相关用法分享
Mar 16 Javascript
微信小程序  modal弹框组件详解
Oct 27 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
Apr 10 Javascript
jQuery实现简单的滑动导航代码(移动端)
May 22 jQuery
javascript将json格式数组下载为excel表格的方法
Dec 22 Javascript
浅谈Fetch 数据交互方式
Dec 20 Javascript
通过JS运行机制的角度说说作用域
Mar 12 Javascript
微信jssdk踩坑之签名错误invalid signature
May 19 Javascript
Vue 打包后相对路径的引用问题
Jun 05 Vue.js
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
phpmyadmin MySQL 加密配置方法
2009/07/05 PHP
用mysql触发器自动更新memcache的实现代码
2009/10/11 PHP
php csv操作类代码
2009/12/14 PHP
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
php使用mkdir创建多级目录入门例子
2014/05/10 PHP
php中session与cookie的比较
2015/01/27 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
Jquery调用webService远程访问出错的解决方法
2010/05/21 Javascript
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
Jquery实现三层遍历删除功能代码
2013/04/23 Javascript
js控制frameSet示例
2013/09/10 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
Javascript调用函数方法的几种方式介绍
2015/03/20 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
2017/05/22 Javascript
JS高阶函数原理与用法实例分析
2019/01/15 Javascript
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
Python中利用原始套接字进行网络编程的示例
2015/05/04 Python
Python查询阿里巴巴关键字排名的方法
2015/07/08 Python
python更新列表的方法
2015/07/28 Python
python嵌套函数使用外部函数变量的方法(Python2和Python3)
2016/01/31 Python
python实现对csv文件的列的内容读取
2018/07/04 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
python实现的config文件读写功能示例
2019/09/24 Python
TensorFlow MNIST手写数据集的实现方法
2020/02/05 Python
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用
2013/07/30 面试题
C语言如何决定使用那种整数类型
2016/11/26 面试题
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
成品仓管员工作职责
2013/12/29 职场文书
操行评语大全
2014/04/30 职场文书
校本课程教学计划
2015/01/19 职场文书
党支部工作总结2015
2015/04/01 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python
Rust中的Struct使用示例详解
2022/08/14 Javascript