DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> JS重載實現方法分析
JS重載實現方法分析
編輯:關於JavaScript     

本文實例分析了JS重載實現方法。分享給大家供大家參考,具體如下:

重載是面向對象語言裡很重要的一個特性,JS中沒有真正的重載,是模擬出來的(因為js是基於對象的編程語言,不是純面向對象的,它沒有真正的多態:如繼承、重載、重寫)

一、什麼時候用重載?

舉例:

function getDataTop10(){
  alert("返回前10條數據");
}

後來需求改了,需要獲得20條數據,而getDataTop10又被很多函數調用了,整體替換可以但麻煩,這時可以用重載

進而引出什麼是重載:函數名相同,但是可以區分出來,想用哪個就用哪個,而不是後面的同名函數覆蓋前面的

二、怎麼用?

arguments:Js裡的一個內置對象,包含了調用者傳遞的實際參數(函數聲明時定義的參數個數不影響)

function getData(){
  alert("返回所有數據");
}
function getDataTop(num){
  alert("返回前"+num+"數據");
}
function getDataLimit(num1,num2){
  alert("返回前"+num1+"-"+num2+"數據");
}
function getDste(){
  var num=arguments.length;
  if(!num){
  getData();
  }
  else if(num==1){
  getDataTop(arguments[0]);
  }
  else if(num==2){
  getDataLimit(arguments[0],arguments[1]);
  }
}
getDste(5)

當參數很多時要寫一大串,遂可以改進

function getData(){
  alert("返回所有數據");
}
function getDataTop(num){
  alert("返回前"+num+"數據");
}
function getDataLimit(num1,num2){
  alert("返回前"+num1+"-"+num2+"數據");
}
function getDste(){
  var num=arguments.length;
  if(!num){
    getData();
  }
  else if(num==1){
    getDataTop.apply(this,arguments);
  }
  else if(num==2){
    getDataLimit.apply(this,arguments);
  }
}
getDste(5)

如果參數個數相同,類型不同,又該如何

function getData(){
  alert("返回所有數據");
}
function getDataTop(num){
  alert("返回前"+num+"數據");
}
function getDataLimit(num1,num2){
  alert("返回前"+num1+"-"+num2+"數據");
}
function getDataByType(type){
  alert("將返回"+type+"類型的數據");
}
function getDste(){
  var num=arguments.length;
  if(!num){
  getData();
  }
  else if(num==1){
  if(typeof arguments[0]=="number"){
      getDataTop.apply(this,arguments);
  }
  else{
    getDataByType.apply(this,arguments);
  }
  }
  else if(num==2){
  getDataLimit.apply(this,arguments);
  }
}
getDste("array")

三、好處

有利於合作開發

四、壞處

“實現”太勉強,如果參數過多,就要很多if語句,顯得代碼很亂

更多關於JavaScript相關內容可查看本站專題:《javascript面向對象入門教程》、《JavaScript中json操作技巧總結》、《JavaScript切換特效與技巧總結》、《JavaScript查找算法技巧總結》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

希望本文所述對大家JavaScript程序設計有所幫助。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved