let fnc = function () {
let lenCol = [//对应的参数长度集合,存放对应参数的类型
{//长度为0的处理函数
"defult":()=>{
throw new Error("args is cant empty");
}
},
{//1
"string":function ({sql}) {
console.log("this is sql:"+sql)
}
},
{//2
"string-object":function ({sql,value}) {
console.log(sql,value);
},
"string-function":function ({sql,callback}) {
console.log(sql,callback);
}
},
{
"string-object-function":function ({sql,value,callback}) {
console.log(sql,value);
callback("rs");
}
}
];
let typeCol ='';
let args ={sql:null,value:null,callback:null}
for(let i=0;i<arguments.length;i++){
if(i==arguments.length-1)//拼接类型
typeCol += typeof arguments[i];
else
typeCol += typeof arguments[i]+'-';
if(typeof arguments[i]==='string'){//数据提取
args.sql = arguments[i];
}else if (typeof arguments[i]==='object'){
args.value = arguments[i];
}else {
args.callback = arguments[i];
}
}
if(arguments.length>0)//根据长度,类型重载方法
lenCol[arguments.length][typeCol](args);
else
lenCol[arguments.length]['defult']();
};
fnc('sql')
js 实现重载
最新推荐文章于 2022-07-14 11:26:50 发布