Javascript设计模式States

Posted 咚咚锵咚呛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript设计模式States相关的知识,希望对你有一定的参考价值。

1.当一个对象内部的状态发生改变的时候会导致其行为发生改变

    //状态对象的实现
    var ResutlState=function(){
        var States={
            state0:function(){
                console.log("第0种状态");
            },
            state1:function(){
                console.log("第2种状态");
            },
            state2:function(){
                console.log("第3种状态");
            },
            state3:function(){
                console.log("第4种状态");
            }
        }
        function show(result){
            States[‘state‘+result] && States[‘state‘+result]();
        }
        return{
            show:show
        }
    }();
    //调用
    ResutlState.show(2);
    //状态的优化
    var MarryState=function(){
        var _currentSate={};
        var States={
            jump:function(){
                console.log("跳跃");
            },
            move:function(){
                console.log("移动");
            },
            shoot:function(){
                console.log("射击");
            },
            squat:function(){
                console.log("蹲下");
            }
        }
        //动作控制类
        var Action={
            changeState:function(){
                var arg=arguments;
                _currentSate={};
                if(arg.length){
                    for(var i=0;i<arg.length;i++){
                        _currentSate[arg[i]]=true
                    }
                }
                return this;
            }
            ,
            goes:function(){
                for(var i in _currentSate){
                     States[i]();
                }
                return this;
            }
        }
        return{
            change:Action.changeState,
            goes:Action.goes
        }
    }
    //调用函数
//    MarryState().change(‘jump‘,‘shoot‘).goes().goes().change(‘shoot‘).goes();
    //或者
    var marr =new MarryState();
    marr.change(‘jump‘,‘shoot‘).goes().change(‘jump‘).goes();

  

以上是关于Javascript设计模式States的主要内容,如果未能解决你的问题,请参考以下文章

炫酷 CSS 背景效果的 10 个代码片段

VSCode自定义代码片段12——JavaScript的Promise对象

VSCode自定义代码片段12——JavaScript的Promise对象

30秒就能看懂的JavaScript 代码片段

高效Web开发的10个jQuery代码片段

常用Javascript代码片段集锦