用js写一段单例的状态管理器
时间: 2023-10-28 10:04:48 浏览: 69
基于js实现的客户端Page Cookie (maintaining page state)的状态管理例子
以下是使用JavaScript实现单例状态管理器的示例代码:
```javascript
const stateManager = (function() {
let state = {};
function setState(newState) {
state = {...state, ...newState};
console.log('New state:', state);
}
function getState() {
return state;
}
return {
setState,
getState
};
})();
// Usage:
stateManager.setState({count: 5});
console.log(stateManager.getState()); // {count: 5}
stateManager.setState({name: 'John'});
console.log(stateManager.getState()); // {count: 5, name: 'John'}
stateManager.setState({count: 10});
console.log(stateManager.getState()); // {count: 10, name: 'John'}
```
在上面的代码中,我们使用了一个立即执行函数,该函数返回一个包含两个方法的对象:`setState`和`getState`。我们使用`let`关键字声明了一个状态变量`state`,并在`setState`方法中使用ES6的扩展运算符来更新状态。`getState`方法返回当前状态。
由于我们使用了一个立即执行函数来创建闭包,因此无论我们在代码中创建多少个`stateManager`实例,它们都将共享同一个状态变量。这就是单例模式的核心思想。
阅读全文