上问我们讲到了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('