我在 JS 中有一个状态机(为了简化),它的初始状态只在发生任何事情之前设置。
define(function() {
var state = 'initial',
exports = {};
exports.getState = function() {
return state;
};
exports.doSomething = function() {
state = 'newState';
};
return exports;
});
因为在重新加载应用程序之前状态是永久的,所以在第一次测试之后,状态将永远不会再次“初始”,所以我需要一种方法来重置它。
哪种方式最不脏?我是不是该...
a) 简单地公开状态,但用 _ 将其标记为私有?
define(function() {
var exports = {};
exports._state = 'initial'
exports.getState = function() {
return this.state;
};
exports.doSomething = function() {
this.state = 'newState';
};
return exports;
});
b)通过函数使状态可写?
define(function() {
var state = 'initial',
exports = {};
exports.getState = function() {
return state;
};
exports.doSomething = function() {
state = 'newState';
};
if(window.xxTests) {
window.xxTests.Module = {
setState: function(newState) {
state = newState;
}
};
}
return exports;
});
(其中 xx 是应用程序前缀,xxTests 仅定义为测试运行器的一部分)
或者
c) 做一些我完全没想到的事情?
感谢您的想法和建议。