Variables privées en Javascript

Voici-ci dessous un pattern Javascript que je rencontre souvent :

(function() {

    ...

})();
C'est seulement depuis ce matin que j'ai compris son utilité (honte à moi).
Cela permet de définir des variables privées.

Voici un exemple de mise en oeuvre :

<html>
    <head>
    <script type="text/javascript">
        var public_var = 'public';
        var namespace = {};

        (function() {
            var private_var = 'private';
            namespace.foobar = function() {
                console.log('foobar function');
                console.log(private_var);
            }
        })();

        window.onload = function() {
            console.log('onload function');
            try {
                console.log(private_var);
            } catch(e) {
                console.log('private_var access deny here');
            }
            namespace.foobar();
        }
    </script>
    </head>
    <body>
    </body>
</html>

Le résultat dans la console est :

onload function
private_var access deny here
foobar function
private

La variable private_var est accessible seulement depuis le code qui se trouve dans :

(function() {

    ...

})();

Dans cet exemple, seul namespace.foobar a accès à cette variable.

blog comments powered by Disqus

Mes flux :