亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于多個if else else if的優化

關于多個if else else if的優化

當年話下 2019-05-20 10:41:05
一段代碼中,有很多的ifelse怎么去優化這個代碼varsayHello=function(personal){if(personalinstanceofLi){console.log('嘿,你好');}elseif(personalinstanceofDan){console.log('吃早飯了么');}elseif(personalinstanceofArthur){console.log('你今天看起來真漂亮')}};varLi=function(){};varDan=function(){};varArthur=function(){};sayHello(newLi());//嘿,你好sayHello(newDan());//吃早飯了么sayHello(newArthur());//你今天看起來真漂亮
查看完整描述

2 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

關于JavaScript中ifelse的問題可以參考吾輩的JavaScript避免使用if-else的方法主要的思路是利用策略模式+工廠函數實現狀態機
這里也推薦一下吾輩的工具庫rx-util,里面實現了一個簡單的無限狀態機StateMachine
你的代碼改造如下
import{StateMachine}from'./StateMachine'
conststateMachine=StateMachine.getFactory()
classIBase{
hello(){}
}
stateMachine.register(
1,
classLiextendsIBase{
hello(){
return'嘿,你好'
}
}
)
stateMachine.register(
2,
classDanextendsIBase{
hello(){
return'吃早飯了么'
}
}
)
stateMachine.register(
3,
classArthurextendsIBase{
hello(){
return'你今天看起來真漂亮'
}
}
)
varsayHello=function(personal){
console.log(personal.hello())
}
sayHello(stateMachine.getInstance(1))//嘿,你好
sayHello(stateMachine.getInstance(2))//吃早飯了么
sayHello(stateMachine.getInstance(3))//你今天看起來真漂亮
                            
查看完整回答
反對 回復 2019-05-20
  • 2 回答
  • 0 關注
  • 1651 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號