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

