JS重載實(shí)現(xiàn)方法分析
本文實(shí)例分析了JS重載實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
重載是面向?qū)ο笳Z(yǔ)言里很重要的一個(gè)特性,JS中沒(méi)有真正的重載,是模擬出來(lái)的(因?yàn)閖s是基于對(duì)象的編程語(yǔ)言,不是純面向?qū)ο蟮模鼪](méi)有真正的多態(tài):如繼承、重載、重寫(xiě))
一、什么時(shí)候用重載?
舉例:
function getDataTop10(){
alert("返回前10條數(shù)據(jù)");
}
后來(lái)需求改了,需要獲得20條數(shù)據(jù),而getDataTop10又被很多函數(shù)調(diào)用了,整體替換可以但麻煩,這時(shí)可以用重載
進(jìn)而引出什么是重載:函數(shù)名相同,但是可以區(qū)分出來(lái),想用哪個(gè)就用哪個(gè),而不是后面的同名函數(shù)覆蓋前面的
二、怎么用?
arguments:Js里的一個(gè)內(nèi)置對(duì)象,包含了調(diào)用者傳遞的實(shí)際參數(shù)(函數(shù)聲明時(shí)定義的參數(shù)個(gè)數(shù)不影響)
function getData(){
alert("返回所有數(shù)據(jù)");
}
function getDataTop(num){
alert("返回前"+num+"數(shù)據(jù)");
}
function getDataLimit(num1,num2){
alert("返回前"+num1+"-"+num2+"數(shù)據(jù)");
}
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)
當(dāng)參數(shù)很多時(shí)要寫(xiě)一大串,遂可以改進(jìn)
function getData(){
alert("返回所有數(shù)據(jù)");
}
function getDataTop(num){
alert("返回前"+num+"數(shù)據(jù)");
}
function getDataLimit(num1,num2){
alert("返回前"+num1+"-"+num2+"數(shù)據(jù)");
}
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)
如果參數(shù)個(gè)數(shù)相同,類(lèi)型不同,又該如何
function getData(){
alert("返回所有數(shù)據(jù)");
}
function getDataTop(num){
alert("返回前"+num+"數(shù)據(jù)");
}
function getDataLimit(num1,num2){
alert("返回前"+num1+"-"+num2+"數(shù)據(jù)");
}
function getDataByType(type){
alert("將返回"+type+"類(lèi)型的數(shù)據(jù)");
}
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")
三、好處
有利于合作開(kāi)發(fā)
四、壞處
“實(shí)現(xiàn)”太勉強(qiáng),如果參數(shù)過(guò)多,就要很多if語(yǔ)句,顯得代碼很亂
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專(zhuān)題:《javascript面向?qū)ο笕腴T(mén)教程》、《JavaScript中json操作技巧總結(jié)》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- JS模擬實(shí)現(xiàn)方法重載示例
- JavaScript中的方法重載實(shí)例
- javascript中通過(guò)arguments參數(shù)偽裝方法重載
- js面向?qū)ο缶幊讨绾螌?shí)現(xiàn)方法重載
- js中方法重載如何實(shí)現(xiàn)?以及函數(shù)的參數(shù)問(wèn)題
- 有關(guān)于JS構(gòu)造函數(shù)的重載和工廠(chǎng)方法
- 添加JavaScript重載函數(shù)的輔助方法2
- 為JavaScript添加重載函數(shù)的輔助方法
- JavaScript 的方法重載效果
- 妙用緩存調(diào)用鏈實(shí)現(xiàn)JS方法的重載
相關(guān)文章
如何讓你的JavaScript函數(shù)更加優(yōu)雅詳解
在Js世界中有些操作會(huì)讓你無(wú)法理解,但是卻無(wú)比優(yōu)雅,下面這篇文章主要給大家介紹了關(guān)于如何讓你的JavaScript函數(shù)更加優(yōu)雅的相關(guān)資料,需要的朋友可以參考下2021-07-07
網(wǎng)頁(yè)自動(dòng)跳轉(zhuǎn)代碼收集
網(wǎng)頁(yè)自動(dòng)跳轉(zhuǎn)代碼收集2009-09-09
js實(shí)現(xiàn)的簡(jiǎn)練高效拖拽功能示例
這篇文章主要介紹了js實(shí)現(xiàn)的簡(jiǎn)練高效拖拽功能,通過(guò)對(duì)js鼠標(biāo)事件的擴(kuò)展實(shí)現(xiàn)拖拽效果,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2016-12-12
JavaScript實(shí)現(xiàn)SHA-1加密算法的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)SHA-1加密算法的方法,實(shí)例分析了使用javascript實(shí)現(xiàn)SHA-1加密算法的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
一個(gè)頁(yè)面放2段圖片滾動(dòng)代碼出現(xiàn)沖突的問(wèn)題如何解決
這是一段調(diào)用圖片流動(dòng)的代碼?為什么我在首頁(yè)同時(shí)復(fù)制出二段代碼后圖片不能流動(dòng)顯示了?遇此問(wèn)題很是疑惑,于是搜集整理一些實(shí)用技巧以解大伙們的燃眉之急,需要了解的朋友可以參考下2012-12-12
用js格式化金額可設(shè)置保留的小數(shù)位數(shù)
這篇文章主要介紹了如何用js格式化金額并設(shè)置保留的小數(shù)位數(shù),需要的朋友可以參考下2014-05-05
JS密碼生成與強(qiáng)度檢測(cè)完整實(shí)例(附demo源碼下載)
這篇文章主要介紹了JS密碼生成與強(qiáng)度檢測(cè)完整實(shí)例,涉及JavaScript密碼的生成,破解時(shí)間計(jì)算,密碼安全監(jiān)測(cè)及大小寫(xiě)鎖定判斷等功能的實(shí)現(xiàn)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2016-04-04

