下面是我的自执行函数:
var incrementInt = (function() {
var manyOut = 10;
if(incInt) {
incInt+=manyOut;
} else {
var incInt = 0;
}
return {
s: incInt,
m: manyOut
};
})();我已经将变量incInt和manyOut私有化,并将变量incrementInt绑定到返回的对象。
我的目标是创建一个函数,该函数返回一个对象,其中一个属性是一个整数,该整数每次被调用时都会递增。我希望增量变量的作用域尽可能窄。
我在上面的解决方案中遇到的问题是,每次调用函数时都会重新初始化变量incInt。由于其在函数中的作用域,该变量将自动销毁。
发布于 2012-09-17 08:38:09
您需要使用方法来添加和获取变量incInt。
var incrementInt = (function() {
var manyOut = 10,
incInt = 0;
return {
add: function() {
return incInt += manyOut;
},
getInt: function() {
return incInt;
}
};
})();
var a = incrementInt;
a.add();
a.add();
a.getInt(); // 20发布于 2012-09-17 08:33:11
您可以像这样创建和对象
function incr () {
var i = 0;
this.inc = function() {
i++;
}
}
var incrInt = new incr();
// somewhere in you code
incrInt.inc();发布于 2012-09-17 08:34:27
var f = function() { var c=0; return function() { return c++; }} ()
> f()
0
> f()
1
> f()
2基本上,利用Javascript的功能来使用函数创建作用域和闭包来捕获局部变量。
https://stackoverflow.com/questions/12451877
复制相似问题