在函数中兼容两种入参
原因
在改造封装请求报文的方法中,原来是使用字符串的形式传参而且入参比较多,在我改造请求报文的方法中在原有的参数基础上有新增了几个参数,如果改变入参,那么在后面报文封装方法的使用中,每次都要写超过10多个的入参,我实在是不能接受,就把入参改成对象的形式,但是原有的封装的方法也有很多系统在用,所以新的入参方式需要兼容两种入参
// 原来的入参
export function getMsg(version,msg,type,body,ext,receiver,channel,func,code,dsptch,grp,access){
...
};
//原有的方法使用
getMsg(version,msg,type,body,ext,receiver,channel,func,code,dsptch,grp,access);
//改造之后的方法
export function getMsg(...arg){
//处理不同方式的入参
const [version,msg,type,body,ext,receiver,channel,func,code,dsptch,grp,access]=strToObj(arg)
...
};
let arg={
version:"version",
msg:"msg",
type:"type",
body:"body",
ext:"ext",
receiver:"receiver",
channel:"channel",
func:"func",
code:"code",
dsptch:"dsptch",
grp:"grp",
access:"access"
}
getMsg(arg);
//解析不同的传参
function strToObj(arg){
let newArg;
if(typeof arg[0]==="object"){
let [{version,msg,type,body,ext,receiver,channel,func,code,dsptch,grp,access}]=[arg[0]]
newArg=[version,msg,type,body,ext,receiver,channel,func,code,dsptch,grp,access]
}else if(typeof arg[0]==="string"){
}
}
优势
在优化之后的入参方式更有可读性,入参也更加直观,要是只有几个参数有值不需要和原来一样把所有入参都写上
//原来的函数方法调用
getMsg(version,"","","","","","","","","","",access);
//优化之后的函数调用
let arg={
version:"version",
access:"access"
}
getMsg(arg);