JavaScript中的方法重載

來源:互聯網
上載者:User

        對js有些瞭解的人都知道,在js中根本就不存在像C#中的那種方法重載,而有的只是方法的覆蓋,當你在js中敲入兩個或多個同名的方法的時候,不管方法(函數)的參數個數怎麼個不同,這個方法名只能屬於最後定義的那個函數。也就是說後一個方法會把前面同名的方法給覆蓋掉。

我們看一段下面的代碼:

<script type="text/javascript">        function sayHi() {            alert("你好,我是第一個sayHi方法!");        }        function sayHi() {            alert("你好,我是第二個sayHi方法!");        }        function sayHi() {            alert("你好,我是第三個sayHi方法!");        }        sayHi();</script>

在瀏覽器中查看的結果是:你好,我是第三個sayHi方法!

可見,最後一個方法已經把前面同名的兩個方法覆蓋掉了。這就是js中鼎鼎有名的方法覆蓋問題。

 

那麼在js中難道就不可以實現方法重載了嗎?

我們再來看下面這段代碼:

<script type="text/javascript">        function sayHi() {            if (arguments.length==1) {                alert(arguments[0] + "你好,我是第一個sayHi方法!");            } else if (arguments.length == 2) {                alert(arguments[0] + "," + arguments[1] + "你好,我是第二個sayHi方法!");            } else if (arguments.length == 3) {                alert(arguments[0] + "," + arguments[1]+","+arguments[2] + "你好,我是第三個sayHi方法!");            }        }        sayHi("Tom");        sayHi("Tom", "lucy");            sayHi("Tom","lucy","jame");</script>

在瀏覽器中查看時會依次彈出三個訊息框,調用sayHi方法中因參數個數不同而分的這三種不同情況。

       這樣看來,上面的方法很類似於C#中的方法重載,可以根據傳入參數的不同類分別調用屬於自己的分支。

註:不能完全類似於C#眾的方法重載,因為沒有辦法根據傳入參數的類型來調用屬於自己的重載方法。

不過現在的js發展如此之快,幾乎擺脫了之前面向過程的編程進入了物件導向編程,相信很快會解決這個問題了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.