javascript模擬實現函式過載

antzone發表於2017-03-15

函式過載功能需要模擬實現,因為本身並不具備,首先看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
function func(){console.log("螞蟻部落");}
function func(num){console.log(num)}
func();
func(2);

第一個列印undefined,第二個列印2,說明第一個函式被第二個覆蓋,沒有實現過載功能。

下面就來介紹一下如何模式實現過載效果。arguments可以返回一個物件,它存放的是傳入函式的實參,通過索引可以訪問每一個實參,例如arguments[0]就是傳入的第一個實參。

特別注意:函式的形式引數正如其名,只是一個形式而已,例如只定義一個形參,但你完全可以傳入任意多個實參。

於是就可以利用js函式的這個特點,進行一下判斷,模擬實現過載:

[JavaScript] 純文字檢視 複製程式碼
function func(){
  if(arguments.length==0){
    console.log("螞蟻部落"); 
  }else if(arguments.length==1){
    console.log(arguments[0])
  }
}
func();
func(2);

以上就簡單模擬實現了函式的過載效果。

相關閱讀:

(1).arguments屬性可以參閱javascript arguments一章節。 

相關文章