欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Javascript 面向對象之重載

 更新時間:2010年05月04日 15:02:00   作者:  
在面向對象語言里重載是很重要的一個特性,而JavaScript這個自稱面向對象的語言竟然沒有直接提供重載的功能。
上幾節(jié)講了 JavaScript 面向對象之命名空間 、 javascript 面向對象的JavaScript類 與 JavaScript 面向對象的之私有成員和公開成員 ,大家可以先看上面的再繼續(xù)往下看。


假如 我這樣定義:
復制代碼 代碼如下:

function getDate(){.....}
function getDate(date){.....}

那么后一個方法將覆蓋前一個,雖然不報錯。

但是我們確實是可以實現(xiàn)重載的,如果你用過jQuery,你就會深有體會,比如$("#btn").val() 是獲取id為"btn"的按鈕的value值,而$("#btn").val("點我")則是給id為"btn"的按鈕賦值。


那么JavaScript是怎么實現(xiàn)(準確地講應該叫“模擬”)的呢?。
答案很簡單:arguments
arguments是JavaScript里的一個內(nèi)置對象,包含了調用者傳遞的實際參數(shù),但不局限于函數(shù)聲明所定義的參數(shù)列表,而調用時只它和數(shù)組一樣有個length屬性?!?
   我們暫且把它當“數(shù)組”來理解吧,我們根據(jù)該數(shù)組的長度以及其元素的類型來選擇不同的實現(xiàn),從而模擬了重載?!?
   具體請看下面的示例:

復制代碼 代碼如下:

function getDate(){
if(arguments.length==0){
var date=new Date().toLocaleDateString();
return "您沒有輸入?yún)?shù),現(xiàn)在時間:"+date ;
}

if(arguments.length==1){
if(arguments[0].constructor ==Date){
return "您輸入的參數(shù)是Date類型,現(xiàn)在時間是:"+arguments[0].toDateString();
}
if(arguments[0].constructor ==String){
return "您輸入的參數(shù)是String類型,現(xiàn)在時間是:"+arguments[0];
}
}

}

于是我們可以這樣調用:
復制代碼 代碼如下:

getDate()
getDate(new Date())
getDate("星期一")

這樣就實現(xiàn)了JavaScript的重載,不過我們發(fā)現(xiàn)這樣的“實現(xiàn)”實在是太勉強了,如果參數(shù)多了,就會顯得力不從心,代碼也會很亂,到處是if{...} 。所以我不建議在JavaScript中使用這樣的重載。

相關文章

  • 學習JS面向對象成果 借國慶發(fā)布個最新作品與大家交流

    學習JS面向對象成果 借國慶發(fā)布個最新作品與大家交流

    學習JS面向對象成果,借國慶發(fā)布個最新作品與大家交流,大家可以看下。
    2009-10-10
  • Javascript 對象的解釋

    Javascript 對象的解釋

    ECMAScript沒有像C++,Smalltalk,或者java中那樣規(guī)矩的類,可是它支持通過執(zhí)行分配空間的代碼來創(chuàng)建對象、并初始化對象所有或者一部分屬性的構造器。
    2008-11-11
  • JavaScript 面向對象入門精簡篇

    JavaScript 面向對象入門精簡篇

    圍繞面向對象的幾大關鍵字:封裝 ,繼承 ,多態(tài) ,展開JavaScript面向對象
    2009-03-03
  • JavaScript為對象原型prototype添加屬性的兩種方式

    JavaScript為對象原型prototype添加屬性的兩種方式

    為對象原型prototype添加屬性的的方法, 需要的朋友可以參考下。
    2010-08-08
  • JavaScript 基于原型的對象(創(chuàng)建、調用)

    JavaScript 基于原型的對象(創(chuàng)建、調用)

    在我們寫js代碼的時候,內(nèi)部對象是不可避免的要引用,但是光靠這些對象是不夠的,所以需要我們自己定義對象,這個時候通常用到的對象是第三種,即基于原型的對象,下面就如何創(chuàng)建自己的對象,定義對象的方法、屬性,調用對象給出詳細的說明。
    2009-10-10
  • javascript 面向對象編程 萬物皆對象

    javascript 面向對象編程 萬物皆對象

    javascript幾乎成了如今web開發(fā)人員必學必會的一門語言,但很多人卻只停在了一些表單驗證等基礎操作層面上,在面向對象語言大行其道的當下,我們需要去學習javascript的面向對象的知識,以便更好的掌握javascript、為深入理解各種腳本框架打好基礎。
    2009-09-09
  • JS類定義原型方法的兩種實現(xiàn)的區(qū)別評論很多

    JS類定義原型方法的兩種實現(xiàn)的區(qū)別評論很多

    JS類定義原型方法的兩種實現(xiàn)的區(qū)別評論很多...
    2007-09-09
  • javascript 寫類方式之十

    javascript 寫類方式之十

    mootools.js的最新版本是1.2.3,這里使用的是1.2.0。mootool被設計成非常緊湊的,模塊化的,面向對象的的js庫。mootool中寫類用Class類。
    2009-07-07
  • JavaScript 構造函數(shù) 面相對象學習必備知識

    JavaScript 構造函數(shù) 面相對象學習必備知識

    關于JavaScript構造函數(shù),如今出現(xiàn)了很多JavaScript的框架,例如jQuery、Ext等等這些,這些將JavaScript作為一種面向對象的語言進行編程,那么JavaScript到底是怎么樣實現(xiàn)面向對象的一些特征的呢,首先,我們來看看JavaScript怎么樣來定義一個構造函數(shù)。
    2010-06-06
  • Javascript 類與靜態(tài)類的實現(xiàn)(續(xù))

    Javascript 類與靜態(tài)類的實現(xiàn)(續(xù))

    由于MM的事件已干完,接著我們的靜態(tài)類的實現(xiàn)。這東西在Javascript里用得會非常的頻繁,因為針對現(xiàn)在的網(wǎng)頁,多個基于同一個類對象的頁面不多,往往不同塊對象的交互就可以解決問題了,這就需要在JS針對元素定義幾個靜態(tài)類就可以完事了,進入正題。
    2010-04-04

最新評論