力拔山兮气盖世

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
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');
posted on 2008-09-04 10:41  Dry Matinee  阅读(403)  评论(0)    收藏  举报