JavaScript 的方法重載效果
更新時(shí)間:2009年08月07日 22:54:39 作者:
JavaScript 語言的方法聲明中,不能明確指定參數(shù)的類型和個(gè)數(shù),所以不能實(shí)現(xiàn)方法的重載,但是我們可以用其他的方法來實(shí)現(xiàn)重載的效果。
在 JavaScript 的方法內(nèi),有個(gè)叫做 arguments 的變量數(shù)組,它是只讀的,所有實(shí)際傳入的參數(shù)變量都
放在了里面,通過它,我們可以對傳入的參數(shù)進(jìn)行類型檢查,從而實(shí)現(xiàn)重載的效果。
判斷一個(gè)變量的類型有兩種方法。
1,用 typeof 語句:
function check(){
if(typeof arguments[0] == 'string')
alert('你傳入的參數(shù)是個(gè)字符串');
else if(typeof arguments[0] == 'number')
alert('你傳入的參數(shù)是個(gè)數(shù)字');
}
2,用所有 JavaScript 變量都帶有的一個(gè)屬性 constructor,這個(gè)屬性指向用來構(gòu)造該變量的構(gòu)造函數(shù):
function check(){
if(arguments[0].constructor == String)
alert('你傳入的參數(shù)是個(gè)字符串');
else if(arguments[0].constructor == Number)
alert('你傳入的參數(shù)是個(gè)數(shù)字');
}
對照表:
typeof constructor
---------------------------
string String
number Number
object Object
function Function
boolean Boolean
object Array
object User
通過這個(gè)對照表可以看出用 typeof 不能準(zhǔn)確的判斷出具體的類型,所以我們用 constructor 來進(jìn)行判
斷。
首先我們定義一個(gè)用來判斷參數(shù)類型和個(gè)數(shù)的方法
function checkArgs(types,args){
// 檢查參數(shù)個(gè)數(shù)
if(types.length != args.length){
return false;
}
// 檢查參數(shù)類型
for(var i=0; i<args.length; i++){
if(args[i].constructor != types[i]){
return false;
}
}
return true;
}
我們定義一個(gè)方法對上面的方法進(jìn)行應(yīng)用
function show(){
// 處理參數(shù)是一個(gè)字符串的調(diào)用
if(checkArgs([String],arguments)){
alert(arguments[0]);
}
// 處理參數(shù)是一個(gè)字符串和一個(gè)數(shù)字的調(diào)用
else if(checkArgs([String,Number],arguments)){
var s = '';
for(var i=0; i<arguments[1]; i++){
s+=arguments[0];
}
alert(s);
// 參數(shù)不符合要求時(shí),給予提示
}else{
alert('不支持的參數(shù)');
}
}
當(dāng)我們定義的 JavaScript 方法對參數(shù)要求比較嚴(yán)格時(shí),就可以用這樣的方式來編寫代碼。
放在了里面,通過它,我們可以對傳入的參數(shù)進(jìn)行類型檢查,從而實(shí)現(xiàn)重載的效果。
判斷一個(gè)變量的類型有兩種方法。
1,用 typeof 語句:
復(fù)制代碼 代碼如下:
function check(){
if(typeof arguments[0] == 'string')
alert('你傳入的參數(shù)是個(gè)字符串');
else if(typeof arguments[0] == 'number')
alert('你傳入的參數(shù)是個(gè)數(shù)字');
}
2,用所有 JavaScript 變量都帶有的一個(gè)屬性 constructor,這個(gè)屬性指向用來構(gòu)造該變量的構(gòu)造函數(shù):
復(fù)制代碼 代碼如下:
function check(){
if(arguments[0].constructor == String)
alert('你傳入的參數(shù)是個(gè)字符串');
else if(arguments[0].constructor == Number)
alert('你傳入的參數(shù)是個(gè)數(shù)字');
}
對照表:
typeof constructor
---------------------------
string String
number Number
object Object
function Function
boolean Boolean
object Array
object User
通過這個(gè)對照表可以看出用 typeof 不能準(zhǔn)確的判斷出具體的類型,所以我們用 constructor 來進(jìn)行判
斷。
首先我們定義一個(gè)用來判斷參數(shù)類型和個(gè)數(shù)的方法
復(fù)制代碼 代碼如下:
function checkArgs(types,args){
// 檢查參數(shù)個(gè)數(shù)
if(types.length != args.length){
return false;
}
// 檢查參數(shù)類型
for(var i=0; i<args.length; i++){
if(args[i].constructor != types[i]){
return false;
}
}
return true;
}
我們定義一個(gè)方法對上面的方法進(jìn)行應(yīng)用
復(fù)制代碼 代碼如下:
function show(){
// 處理參數(shù)是一個(gè)字符串的調(diào)用
if(checkArgs([String],arguments)){
alert(arguments[0]);
}
// 處理參數(shù)是一個(gè)字符串和一個(gè)數(shù)字的調(diào)用
else if(checkArgs([String,Number],arguments)){
var s = '';
for(var i=0; i<arguments[1]; i++){
s+=arguments[0];
}
alert(s);
// 參數(shù)不符合要求時(shí),給予提示
}else{
alert('不支持的參數(shù)');
}
}
當(dāng)我們定義的 JavaScript 方法對參數(shù)要求比較嚴(yán)格時(shí),就可以用這樣的方式來編寫代碼。
您可能感興趣的文章:
相關(guān)文章
js將網(wǎng)址轉(zhuǎn)為urlencode類型
網(wǎng)址urlencode加密函數(shù),主要用于中文目錄2008-06-06
javascript動(dòng)態(tài)創(chuàng)建表格及添加數(shù)據(jù)實(shí)例詳解
這篇文章主要介紹了javascript動(dòng)態(tài)創(chuàng)建表格及添加數(shù)據(jù),以實(shí)例形式分析了javascript動(dòng)態(tài)創(chuàng)建表格的常用方法,包括不兼容IE6與兼容IE6的實(shí)現(xiàn)方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-05-05
JS正則匹配URL網(wǎng)址的方法(可匹配www,http開頭的一切網(wǎng)址)
這篇文章主要介紹了JS正則匹配URL網(wǎng)址的方法,可實(shí)現(xiàn)匹配www,http開頭的一切網(wǎng)址的功能,涉及JS正則匹配字符串、數(shù)字及特殊字符構(gòu)建URL的操作技巧,需要的朋友可以參考下2017-01-01
微信小程序提取公用函數(shù)到util.js及使用方法示例
這篇文章主要介紹了微信小程序提取公用函數(shù)到util.js及使用方法,結(jié)合實(shí)例形式分析了util.js公用函數(shù)相關(guān)調(diào)用操作技巧,需要的朋友可以參考下2019-01-01
js如何判斷是否在iframe中及防止網(wǎng)頁被別站用iframe嵌套
本文主要介紹了js判斷是否在iframe中及防止網(wǎng)頁被別站用 iframe嵌套的方法。具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01
鍵盤上一張下一張兼容IE/google/firefox等瀏覽器
鍵盤上一張下一張的效果想必大家都有見到過吧,本文為大家介紹的這個(gè)兼容IE,google,firefox等主流瀏覽器2014-01-01
javascript檢測對象中是否存在某個(gè)屬性判斷方法小結(jié)
檢測對象中屬性的存在與否可以通過以下幾種方法來判斷:使用in關(guān)鍵字、使用對象的hasOwnProperty()方法、用undefined判斷、在條件語句中直接判斷,感興趣的朋友可以了解下哈2013-05-05

