为了账号安全,请及时绑定邮箱和手机立即绑定

关于多个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 关注
  • 1628 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信