js 使用命令对象代替switch语句

进入公司前,在面试的时候就曾被问到这个问题,有没有比switch—case完美的写法取代它,我当时是一脸懵逼,后来进入到公司后,终于碰到了这个问题,所以赶紧总结下来!
原来我的代码:

switch(column.property) {
case "money":
sums[index] = (this.sumFooter.moneySum / 100).toFixed(2);
break;
case "profit":
sums[index] = this.sumFooter.profitSum / 100;
break;
default:
break;
}

老套的switch—case写法。
主管修改后的代码:

let mapSum = {
'money': function(f) {
return sums[index] = (f.moneySum / 100).toFixed(2)
},
'profit': function(f) {
return sums[index] = f.profitSum / 100
}
}
let action = mapSum[column.property]
if(!action)
return
action(this.sumFooter)

你可能感兴趣的:(js 使用命令对象代替switch语句)