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

首頁 > 編程 > JavaScript > 正文

JS重載實現方法分析

2019-11-19 18:26:17
字體:
來源:轉載
供稿:網友

本文實例分析了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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大安市| 房山区| 化德县| 九龙坡区| 邯郸县| 永嘉县| 兴山县| 西宁市| 密云县| 四川省| 南昌市| 清河县| 宜州市| 舟山市| 清原| 衡山县| 宜君县| 东乌珠穆沁旗| 古田县| 东阳市| 郴州市| 衡阳市| 盐津县| 平安县| 醴陵市| 陆丰市| 临泉县| 黄浦区| 赤峰市| 渭南市| 合肥市| 类乌齐县| 兴宁市| 周宁县| 阳西县| 九龙坡区| 宝兴县| 成都市| 金昌市| 固原市| 昭苏县|