咱們有A,B,C,D四個不一樣的類別,在最開始的時候只有三個類別,而且兩個類別是作一樣的事:ide
1 function categoryHandle(category) { 2 if(category !== 'A') { 3 console.log('B, C'); 4 } else { 5 console.log('A'); 6 } 7 }
接着,出現了類別D——它與B和C相比來講,有一個不一樣的任務,而它又和B和C有一個相同的任務。因而,代碼變成了這樣。spa
function categoryHandle(category) { if(category !== 'A') { if(category === 'D') { console.log('D'); } else { console.log('B,C'); } console.log('B, C ,D') } else { console.log('A'); } }
而後code
function categoryHandle(category) { if(category === 'A') { console.log('A'); } else if (category === 'B'){ console.log('B'); } else if (category === 'C'){ console.log('D'); }else if (category === 'D'){ console.log('D'); } }
固然用switch語句來作,可是我真不想這樣想。接着,JavaScript的奇技淫巧來完成這個工做:blog
function categoryHandleRefactor(category) { var categoryAction = { 'A': { run: function () { console.log('A') } }, 'B': { run: function () { console.log('B') } }, 'C': { run: function () { console.log('C') } }, 'D': { run: function () { console.log('D') } } }; categoryAction[category].run(); }