J'ai quelque chose comme ça:

var yourNamespace = {

    foo: function() {
        .....
    },

    bar: function() {
        function foobar() {....
        }
    }
};

Est-il possible d'appeler à l'intérieur de foo, la fonction foobar à l'intérieur de bar?

1
Jakub Juszczak 13 juil. 2015 à 16:38

2 réponses

Meilleure réponse

Avec votre structure exacte, vous ne pouvez pas cependant vous pouvez faire quelque chose comme ça:

var yourNamespace = {
   foo: function() {
        ..... 
        yourNamespace.foobar()
    },
    bar: function() {
       function foobar() {....}
       yourNamespace.foobar = foobar;
    }
};

Ou mieux, (IMO):

var yourNamespace = {
   foo: function() {
        ..... 
        yourNamespace.bar.foobar()
    },
    bar: function() {
       yourNamespace.bar.foobar =  function() {....}

    }
};

Remarque: dans les deux cas, bar() doit s'exécuter avant foo() sinon foobar est undefined

2
ben 13 juil. 2015 à 13:41

Ceci est juste un simple modèle de module. Ce que vous devez faire est de créer bar son propre module et de renvoyer foobar à partir de ce module. Exemple:

var yourNamespace = {

    foo: function() {
        this.bar.foobar();
    },

    bar: {
        abc: '',
        foobar: function() {
            console.log('do something');
        }
    }
};

Ou vous pouvez faire quelque chose de plus comme ceci:

var yourNamespace = {
    foo: function() {
        var bar = this.bar();
    },
    bar: function() {
        var abc = '';
        function foobar() {
            console.log('return abc or do something else');
            return abc;
        }
        return {
            foobar: foobar
        }
    }
};
2
kanzelm3 13 juil. 2015 à 13:53