替换if else 可以采用策略模式,下面是用es6 Map数据类型实现策略模式替代if else 的方法
function func(name, no){
const map = new Map() const type1 = {
name: 'Mike',
no: 13098
}
const type2 = {
name: 'Tina',
no: 12090
}
const type3 = {
name: 'Jack',
no: 11090
}
map.set(type1, function() {
console.log("if Mike do something")
})
map.set(type2, function() {
console.log("if Tina do something")
})
map.set(type3, function() {
console.log("if Jack do something")
})
let handle = function() {}
const getVal = (param = {}) => {
for (const value of map.entries()) {
if ((value[0].name=== param.name) && (value[0].no === param.no)) {
handle = value[1]
}
}
}
const params = {
name: name,
no: no
}
getVal(params)
handle.call(this)
}