猿问

关于多个if else else if的优化

一段代码中,有很多的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());//你今天看起来真漂亮
当年话下
浏览 1629回答 2
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))//你今天看起来真漂亮
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答