我想构建一个维护状态的 javascript 函数。这是我想出的一种模式,但我脑海中的某些东西告诉我这是一种反模式。
function f() {
var state = 1;
f = function() {
return state++;
};
return f();
};
这有什么问题吗?如果是这样,什么是更好的方法?
最佳答案
好吧,最好 方法是什么,这是一个见仁见智的问题,但是(虽然我知道它有效)我对让函数覆盖自身有点不舒服。一个类似的模式不这样做但实际上仍然使用相同的闭包思想是这样的:
var f = function() {
var state = 1;
return function() {
return state++;
};
}();
或者这是另一种方式:
function f() {
return f.state++;
}
f.state = 1;
当然,f.state
方法的优点和缺点(取决于您的需要)是 .state
属性可以是由其他代码读取和修改。
关于Javascript:创建带状态的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8161671/