JS语法不支持重载特效,但是我们可以变通一下,通过函数的arguments参数实现
arguments介绍
先来介绍一下arguments
arguments是每个函数中自带的,用来存放函数的所有参数的一个类数组对象
先来看看它长什么样
如上图:它像数组一样拥有下标,也有属性length,代表参数的个数
那arguments到底是什么类型,且看下图
原来arguments的类型是Object
使用时注意:
可以像使用数组一样通过下标获取参数值
通过length属性获取参数个数
它是Object类型,不支持数组API
模拟重载实现
- 实现模板
fun(){
if(arguments.length == 0){
//处理一
}else if(arguments.length == 1){
//处理二
}
...
else{
//处理xx
}
}
- 实现一个函数重载函数getStr与substring功能相同
//通过argument模拟重载实现与substring相同功能的函数getStr
var myStr = new String()
myStr.__proto__.getStr= function(){
if(arguments.length == 0){
return this.substring()
}else if(arguments.length == 1){
return this.substring(arguments[0])
}else{
return this.substring(arguments[0],arguments[1])
}
}
//测试
var str="abcdefghijklmn"
var getstr1 = str.getStr()
console.log(getstr1)//abcdefghijklmn
var getstr2 = str.getStr(3)
console.log(getstr2)//defghijklmn
var getstr3 = str.getStr(3,6)
console.log(getstr3)//def