I am doing a school assignement where we have to do a small application which manage a monster by following a pattern but my lesson is very badly explained so I understand nothing, I can't make the difference between public and private, I know what is the difference in Java, Php but not in js.
Here is what it does, when I load the page, it execute run() in monster.modules.app and this should execute showMe() in monster.modules.actions, the problem is I get this TypeError: monster.modules is undefined..
So can you explained me why I can't access to monster in this public or private function ?
And why do I have to put functions into parenthesis ?
(function (glob) {
    /**
     * Etape 1.1
     */
    // NAMESPACE : monster
    var monster = monster || {
            modules: {}
        };
    /**
     * Etape 1.2
     */
    monster.modules.actions = (function () {
        /**
         * Etape 1.2.1
         */
        var name;
        var life;
        var money;
        var awake;
        return {
            /**
             * Etape 1.2.2
             */
            showMe: function () {
                alert('Monster ' + this.name + ' : {life : ' + this.life + ', money : ' + this.money + ', awake : ' + this.awake + ' }');
            },
            /**
             * Etape 1.2.3
             */
            init: function (name, life, money, awake) {
                this.name = name;
                this.life = life;
                this.money = money;
                this.awake = awake;
            }
        };
    })();
    /**
     * Etape 1.3
     */
    monster.modules.app = (function () {
        /**
         * Etape 1.3.1
         */
        var show = document.getElementById('b6');
        return {
            /**
             * Etape 1.3.2
             */
            run: (function () {
                console.log('run');
                show.onclick = (function () {
                    monster.modules.actions.showMe();
                });
            })
        };
    })();
    /**
     * Etape 1.3.4
     */
    window.onload = (function () {
        monster.modules.app.run();
    });
})(window); 
     
    