Я пытаюсь вернуть набор переменных после инициализации IIFE в качестве свойства. Проблема в том, что я привязываю переменную напрямую, я получаю пустой объект. Если я привяжу его через функцию, я получу желаемый результат.Возвращает переменную как свойство в IIFE
var Application = (function(){
var localInformation = {};
function init(){
localInformation = _demoApiCall();
}
function _demoApiCall(){
// Pretend this method isn't here, and returns a complex object
return {
name: "Demo"
}
}
function doWork(){
// localInformation is properly structured here if called
}
return {
Init: init,
DoWork: doWork,
InfoProp: localInformation, // returns {}
InfoMethod: function(){
return localInformation; // returns {name:"demo"}
}
}
})();
Application.Init();
console.log(Application.InfoProp);
console.log(Application.InfoMethod());
После первоначального вызова Application.Init()
на документ готов, пример будет работать только тогда, когда я называю var inf = Application.InfoMethod()
, однако, было бы гораздо чище, если бы я мог назвать var info = Application.InfoProp
.
Я попытался прочитать JS Closures, но не получил никакой информации о том, почему не будет надлежащей ссылки на частную переменную.
Я хотел написать 'localInformation', однако я обновил свой пример, чтобы иметь код работает. Я никогда не видел ключевое слово 'get' в возврате, оно обязательно будет использовать его, если оно будет работать. Не могли бы вы объяснить, что это делает, это более маниакально, чем предлагает? – TheGeekZn
MDN объясняет это лучше, чем я когда-либо мог: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get – lordvlad
Похоже, вы не можете использовать 'get' перед именем ссылки , Это в основном работает для меня, если я использую его следующим образом: 'Context: {get Current() { обратный ток; }} ' – TheGeekZn