我想在myObj
中使用闭包,这样我就可以增加myIndex
,而不必将myIndex
添加到全局命名空间(也就是TaskHandler
)。
有效。但我还需要将myValue
传递给闭包。我认为通过(function (param) { })(myValue);
传递它是实现它的方法。但它没有定义。
TaskHandler.myFunction(value);
TaskHandler = {
myFunction : function (value) {
this.myObj.run(value);
},
myObj : {
run : function (value) {
this.doIt(value);
},
doIt : (function (value) {
var myIndex = 0;
return function () {
myIndex++;
doSomethingWithValue(myIndex, value); //value undefined
}
})(value)
},
};
答案 0 :(得分:2)
你的IIFE返回的函数应该接受value参数,而不是IIFE本身:
doIt : (function () {
var myIndex = 0;
return function (value) {
myIndex++;
doSomethingWithValue(myIndex, value);
}
})()