0
Я хочу использовать замыкание в myObj
, чтобы я мог увеличивать myIndex
, не добавляя myIndex
в глобальное пространство имен (ака, в TaskHandler
).Как передать переменную в IIFE?
Это работает. Но я также должен пройти в 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)
},
};
Когда это то, что вы проходите через параметры IIFE тогда? – Growler
@Growler, когда у вас есть значение, которое вы хотите передать в момент выполнения IIFE. У вас нет значения, которое вы хотите передать в тот момент (когда созданная объектизация), вы получите его позже, когда вызывается run, и в этот момент 'this.doit' является ссылкой на внутреннюю анонимную функцию , 'this.doit' никогда не ссылается на IIFE, так как он выполняет немедленно и возвращает внутреннюю функцию. – Paulpro