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 相关文章推荐
IE DOM实现存在的部分问题及解决方法
Jul 25 Javascript
Jquery下:nth-child(an+b)的使用注意
May 28 Javascript
仿微博字符限制效果实现代码
Apr 20 Javascript
jquery foreach使用示例
Sep 12 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
Sep 12 Javascript
JavaScript学习笔记之数组随机排序
Mar 23 Javascript
Bootstrap每天必学之按钮(Button)插件
Apr 25 Javascript
jquery checkbox的相关操作总结
Oct 17 Javascript
Jquery on绑定的事件 触发多次实例代码
Dec 08 Javascript
js模拟微博发布消息
Feb 23 Javascript
如何使用vuejs实现更好的Form validation?
Apr 07 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
Mar 08 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边学边教》(01.开篇――准备工作)
2006/12/13 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
2011/07/10 Javascript
jQuery对val和atrr("value")赋值的区别介绍
2014/09/26 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
基于javascript制作经典传统的拼图游戏
2016/03/22 Javascript
原生JS实现图片轮播效果
2016/12/26 Javascript
Angular将填入表单的数据渲染到表格的方法
2017/09/22 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
使用JavaScript生成罗马字符的实例代码
2018/06/08 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
2014/01/23 Python
python使用cPickle模块序列化实例
2014/09/25 Python
python 默认参数问题的陷阱
2016/02/29 Python
numpy中索引和切片详解
2017/12/15 Python
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
python增加矩阵维度的实例讲解
2018/04/04 Python
python+numpy+matplotalib实现梯度下降法
2018/08/31 Python
Python Series从0开始索引的方法
2018/11/06 Python
对python遍历文件夹中的所有jpg文件的实例详解
2018/12/08 Python
浅谈python 类方法/静态方法
2020/09/18 Python
基于Python实现天天酷跑功能
2021/01/06 Python
广州某公司软件工程师面试题
2014/12/22 面试题
什么是封装
2013/03/26 面试题
面试求职的个人自我评价
2013/11/16 职场文书
市场营销管理制度
2014/01/29 职场文书
物理专业大学生职业生涯规划书
2014/02/07 职场文书
企业年度评优方案
2014/06/02 职场文书
学生穿着不得体检讨书
2014/10/12 职场文书
2015年药房工作总结
2015/04/25 职场文书
党员干部廉洁自律承诺书
2015/04/28 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
自愿离婚协议书范本2016
2016/03/18 职场文书
vue首次渲染全过程
2021/04/21 Vue.js
能让Python提速超40倍的神器Cython详解
2021/06/24 Python
Go中的条件语句Switch示例详解
2021/08/23 Golang