javascript函数中,如果参数很多,可以设置一个json参数,将一些可选参数项放到里面去。
这样就有一个问题,既然是可选参数,那么调用的时候,既可以指定,也可以不指定,怎么知道有哪些属性并没有指定?如果不指定,该如何处理?
我的想法是,这个json参数有一个默认值,调用方指定的属性,当然采用调用方的指定;否则采用默认值。具体实现就是将传过来的json参数与默认json参数做个属性一一对照,有则用之,无则补之。
上代码:
function (code, url,option) {//code,url是必选参数;option是可选参数
let _default = {//可选参数的默认值
name:"未命名",
width: 500,
height:400,
maxmin:true,
};
if(typeof option == 'undefined'){//如果option根本没传,简单了,直接全部默认
option = _default;
} else {
for (var k in _default){//否则一一对照
if(typeof option[k] == 'undefined'){//这里k拿到的是json的属性。
//如果_default是数组,拿到的就是下标;js中,数组与json的界线有时真的很模糊。
//I like it
option[k] = _default[k];
}
}
}
}