Можно ли экспортировать возвращаемые свойства / методы в JavaScript?

#javascript

#javascript

Вопрос:

Мне интересно, можно ли экспортировать свойства и методы, возвращенные из модуля IIFE в JavaScript — пример ниже:

 // Combined Projects
const combinedProjects = (() => {

    // Create Combined Project Array
    const combinedArray = [];

    // Active Project
    let activeProject = combinedArray;

    return {
        combinedArray,
        activeProject
    }
});

// Module Exports
export {activeProject};
 

Я изо всех сил пытаюсь получить доступ к переменной «activeProject», когда я импортирую ее куда угодно. Мне интересно, знает ли кто-нибудь, возможно ли это, не удаляя его из модуля?

Спасибо

Комментарии:

1. В опубликованном вами коде нет IIFE. combinedProjects это просто обычная функция, которая никогда не вызывается. IIFE выглядит так: (() => {})() (Немедленно вызываемое выражение функции)

2. Если вы экспортируете combinedProjects , то при импорте вы можете вызвать его, что позволит вам получить доступ activeProject .

3. Спасибо @NickParsons — Я экспортировал combinedProjects, как вы упомянули, но у меня все еще возникают трудности с доступом к activeProject в другом файле (после импорта). Я пробовал консольное ведение журнала combinedProjects и вижу, что он печатается, но я не могу вести журнал консоли ни «combinedProjects.activeProject», ни «activeProject». (Возможно, я неправильно истолковал то, что вы имели в виду, вызывая). Еще раз спасибо

4. На данный момент combinedProjects есть функция, которая будет возвращать объект activeProject , вам нужно будет сделать что-то вроде combinedProjects().activeProject в файле, в который вы его импортируете — если вы хотите запустить функцию только один раз, вы можете сделать это, сохранив объект в переменной const obj = combinedProjects() , а затем используя объект obj.activeProject , но если вы это сделаетея думаю, что приведенный ниже ответ — это больше то, что вам нужно

Ответ №1:

Я не знаю, с какой целью это делается таким образом, но, может быть?

 const combinedProjects = (() => {

    // Create Combined Project Array
    const combinedArray = [];

    // Active Project
    let activeProject = combinedArray;

    return {
        combinedArray,
        activeProject
    }
})();

const {activeProject} = combinedProjects

// Module Exports
export {activeProject};