доступ к закрытым переменным и методам в одном файле js из другого файла js в браузере - PullRequest
0 голосов
/ 28 мая 2019

Я учусь разделять мою программу на несколько файлов javascript, которые можно использовать в браузере - см. Мой код ниже. Я хочу получить доступ к закрытым переменным и методам в MODULE, находясь внутри MODULE.Submodule (или наоборот). Очевидный ответ заключается в том, что я должен сделать эти переменные и методы общедоступными в MODULE. Конечно, если я сделаю их публичными, они больше не будут частными. Когда у меня был весь мой код в одном файле, тогда методы внутри того, что сейчас MODULE.SubModule, могли обращаться ко всем закрытым переменным. Я хочу повторить эту возможность. То есть закрытые переменные и методы в каждом модуле остаются закрытыми для всех модулей (или, что лучше, для конкретных модулей), и только общедоступные переменные и методы из всех модулей становятся общедоступными.

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

// in module.js

let MODULE = (function () {

    const privateVar = 'foo';

    return {
        publicVar: 'bar',

        // should return foo -> works
        publicMethod: function () { return privateVar; };
    };

})();

// in module-submodule.js
MODULE = (function (my) {

    const privateVar = 'baz';

    my.SubModule = {

        // should return baz -> works
        publicMethod: function () { return privateVar },            

        // should return foo from parent MODULE -> DOES NOT work
        superPublicMethod: function() { return my.privateVar}
    }

    return my;

})(MODULE || {});

console.log(MODULE.publicMethod()); // return 'foo'
console.log(MODULE.SubModule.publicMethod()); // returns 'baz'
console.log(MODULE.SubModule.superPublicMethod()); // returns 'undefined'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...