博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js-状态模式
阅读量:6577 次
发布时间:2019-06-24

本文共 1304 字,大约阅读时间需要 4 分钟。

class State{    constructor(color){        this.color = color    }    handle(context){        console.log(`turn to ${this.color} light`)        //设置状态        context.setState(this)    }}//主体class Context{    constructor(){        this.state = null    }    getState(){        return this.state    }    setState(state){        this.state = state    }}//testlet context = new Context()let green = new State('green')console.log(context.getState())let yellow = new State('yellow')console.log(context.getState())let red = new State('red')console.log(context.getState())复制代码

DEMO库:javascript-state-machine

import StateMachine from 'javascript-state-machine'let fsm = new StateMachine({    init:'收藏',    transitions:[        {            name:'doStore',            from:'收藏',            to:'取消收藏'        },        {            name:'deleteStore',            from:'取消收藏',            to:'收藏'        }    ],    methods:{        //监听执行收藏        onDoStore:function(){            alert('收藏成功')            upateText()        },        //监听取消收藏        onDeleteStore:function(){            alert('已经取消收藏')            updateText()        }    }})let $btn = $('#btn')$btn.click(function(){    if (fsm.is('收藏')){         fsm.doStore()    }else{         fsm.deleteStore()    }})updateText(){    $btn.text(fsm.state)}复制代码

复制代码

转载地址:http://mmwno.baihongyu.com/

你可能感兴趣的文章
用tinypng插件创建gulp task压缩图片
查看>>
APM终端用户体验监控分析(下)
查看>>
React Native 0.20官方入门教程
查看>>
JSON for Modern C++ 3.6.0 发布
查看>>
Tomcat9.0部署iot.war(环境mysql8.0,centos7.2)
查看>>
我的友情链接
查看>>
Oracle 服务作用
查看>>
监听在微信中打开页面时的自带返回按钮事件
查看>>
第一个php页面
查看>>
世界各国EMC认证大全
查看>>
LVS DR模型详解
查看>>
Lua基础之coroutine(协程)
查看>>
最优化问题中黄金分割法的代码
查看>>
在JS中使用Ajax
查看>>
在Unbuntu 上安装Phalcon
查看>>
Python正则表达式指南
查看>>
常用的加密算法--摘要认证和签名认证的实现
查看>>
webplayer 设置加载图标和屏蔽右键
查看>>
PHP中利用Ffmpeg获得flv视频缩略图和播放时间
查看>>
percona-toolkit工具包的安装和使用
查看>>