设为首页收藏本站

就爱编程论坛

 找回密码
 注册

人人连接登陆

无需注册,直接登录

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

查看: 928|回复: 0
打印 上一主题 下一主题

Javascript的方法重载 [复制链接]

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    无聊
    2025-5-27 03:37:20
  • 签到天数: 366 天

    [LV.9]以坛为家II

    论坛先锋 学习至圣 荣誉成员 论坛元老 活跃之星 终极领袖

    我玩的应用:

    跳转到指定楼层
    楼主
    发表于 2012-5-20 05:18:14 |只看该作者 |倒序浏览
    NET里面的方法重载用着的确很方便,哪Javascript里面能不能也哪样做呢?
    Javasciprt里面本生是没有方法重载的功能,以前很多人的做法可能是直接少传参数过去,然后在根据参数是否为 [size=-1]"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');

    分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    分享分享0 收藏收藏0 支持支持0 反对反对0 分享到人人 转发到微博
    [img=http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=fRUcHhYWGAQ9GxIFEBwUEVMeEhA]http://rescdn.qqmail.com/zh_CN/htmledition/images/function/qm_open/ico_mailme_02.png[/img]

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册 人人连接登陆

    晴云孤魂's Blog|就爱编程搜帖|手机版|Archiver|就爱编程论坛     

    GMT+8, 2025-7-1 19:16 , Processed in 0.108953 second(s), 28 queries .

    Powered by Discuz! X2

    © 2001-2011 Comsenz Inc.

    回顶部