【掰开揉碎】JavaScript状态机的应用场景与实例(二)

上问我们讲到了js中状态机的应用场景,本期我们详解一下状态机的实际写法

在 JavaScript 中,我们可以使用对象和函数来实现简单的状态机。

下面是一个基本的 JavaScript 状态机的示例,以一个灯的状态转换为例:

const lightStateMachine = {
  currentState: 'off', // 初始状态

  transitions: {
    'off': {
      turnOn: function() {
        console.log('Light is turning on.');
        this.currentState = 'on';
      }
    },
    'on': {
      turnOff: function() {
        console.log('Light is turning off.');
        this.currentState = 'off';
      }
    }
  },

  handleEvent: function(event) {
    const transition = this.transitions[this.currentState][event];
    if (transition) {
      transition.call(this);
    } else {
      console.log('Invalid event for current state.');
    }
  }
};

// 使用状态机
lightStateMachine.handleEvent('turnOn'); // Light is turning on.
lightStateMachine.handleEvent('
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值