JS中应用重载


JavaScript 语言的方法声明中,不能明确指定参数的类型和个数,所以不能实现方法的重载,但是我们可以用其他的方法来实现重载的效果。

在 JavaScript 的方法内,有个叫做 arguments 的变量数组,它是只读的,所有实际传入的参数变量都
放在了里面,通过它,我们可以对传入的参数进行类型检查,从而实现重载的效果。
判断一个变量的类型有两种方法。
1,用 typeof 语句:

View Code
1 function check(){ 
2 if(typeof arguments[0] == 'string')
3 alert('你传入的参数是个字符串');
4 else if(typeof arguments[0] == 'number')
5 alert('你传入的参数是个数字');
6 }


2,用所有 JavaScript 变量都带有的一个属性 constructor,这个属性指向用来构造该变量的构造函数:

View Code
1 function check(){ 
2 if(arguments[0].constructor == String)
3 alert('你传入的参数是个字符串');
4 else if(arguments[0].constructor == Number)
5 alert('你传入的参数是个数字');
6 }

对照表:
typeof constructor
---------------------------
string String
number Number
object Object
function Function
boolean Boolean
object Array
object User
通过这个对照表可以看出用 typeof 不能准确的判断出具体的类型,所以我们用 constructor 来进行判
断。
首先我们定义一个用来判断参数类型和个数的方法

function checkArgs(types,args){ 
// 检查参数个数
if(types.length != args.length){
return false;
}
// 检查参数类型
for(var i=0; i<args.length; i++){
if(args[i].constructor != types[i]){
return false;
}
}
return true;
}

我们定义一个方法对上面的方法进行应用

View Code
 1 function show(){ 
2 // 处理参数是一个字符串的调用
3 if(checkArgs([String],arguments)){
4 alert(arguments[0]);
5 }
6 // 处理参数是一个字符串和一个数字的调用
7 else if(checkArgs([String,Number],arguments)){
8 var s = '';
9 for(var i=0; i<arguments[1]; i++){
10 s+=arguments[0];
11 }
12 alert(s);
13 // 参数不符合要求时,给予提示
14 }else{
15 alert('不支持的参数');
16 }
17 }

当我们定义的 JavaScript 方法对参数要求比较严格时,就可以用这样的方式来编写代码。

优质内容筛选与推荐>>
1、搭建ssh后的简化
2、C++学习
3、CF28B pSort
4、四数之和
5、markdown测试


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn