国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

JS重載實現方法分析

2024-05-06 16:33:47
字體:
來源:轉載
供稿:網友

本文實例分析了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/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玛纳斯县| 河池市| 凤山市| 榆中县| 饶平县| 台中市| 介休市| 涞源县| 鄂托克旗| 扬中市| 东兰县| 循化| 治多县| 临澧县| 远安县| 东源县| 兴义市| 鄯善县| 泸西县| 仁布县| 双柏县| 大化| 镇坪县| 安乡县| 兴化市| 兴义市| 抚顺县| 改则县| 交口县| 剑河县| 定西市| 临泽县| 莆田市| 兴仁县| 乐山市| 浪卡子县| 县级市| 天柱县| 郎溪县| 承德市| 遵义县|