Javascript類比c#方法重載

來源:互聯網
上載者:User

每次看John Resig的blog,都會有很大的收穫!這次和大家一起分享一個Javascript類比c#方法重載的例子。

 function loadMethod(object, name, fn){ 
            var old = object[ name ]; 
            if ( old ) 
                object[ name ] = function(){ 
                    if ( fn.length == arguments.length ) 
                        return fn.apply( this, arguments ); 
                    else if ( typeof old == 'function' ) 
                        return old.apply( this, arguments ); 
                }; 
            else 
                object[ name ] = fn; 
        }

下面寫一個在使用者集合中尋找特定使用者數量的例子function UserCount(){ 
            loadMethod(this, "find", function(list){ 
                //尋找所有數量
                var i=0;
                return list.length;
            }); 
            loadMethod(this, "find", function(list,pwd){ 
                //尋找特定密碼的使用者數量
                var k=0;
                for(var i=0;i<list.length;i++)
                {
                    if(list[i].pwd==pwd)
                        k++;
                }
                return k;
            }); 
            loadMethod(this, "find", function(list,id, pwd){
                //尋找特定密碼和id的使用者數量 
                var k=0;
                for(var i=0;i<list.length;i++)
                {
                    if(list[i].id==id && list[i].pwd==pwd)
                        k++;
                }
                return k;
            })
        }

//定義集合
        var userlist=new Array();
        userlist.push({id:"holygrace",pwd:"12345"});
        userlist.push({id:"JiangYuYang",pwd:"2233"});
        userlist.push({id:"liyanhong",pwd:"12345"});
        userlist.push({id:"mayun",pwd:"adf"});
        userlist.push({id:"wangzidong",pwd:"3456"});
        
        var count=new UserCount()
        alert("find(userlist)找到\n"+count.find(userlist)+"位");
        alert("find(userlist,\"12345\")找到\n"+count.find(userlist,"12345")+"位");
        alert("find(userlist,\"holygrace\",\"12345\")找到\n"+count.find(userlist,"holygrace","12345")+"位");

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.