2011-07-14 2 views
4

J'ai un espace de noms dans mon code JavaScript "MyNameSpace". Je crée une classe JavaScript statique "MyChildStaticClass". J'utilise un motif modulaire. Voici mon code:Question concernant la classe statique sous l'espace de noms

if (typeof MyNameSpace == 'undefined' || !MyNameSpace) { 

    var MyNameSpace = {}; 
} 

    var MyNameSpace = (function(MyNameSpace) { 

     MyNameSpace.MyChildStaticClass = (function() { 
      var myobject; 
      myobject = { 
       x:function(str) { 
        alert(str); 
       } 
      }; 

      return myobject; 
     })(); 
     return MyNameSpace; 
    } (MyNameSpace || {})); 

Le code ci-dessus sera utilisé comme:

MyNameSpace.MyChildStaticClass.x('test'); 

et la sortie ci-dessus sera une boîte d'alerte avec le test de message. J'ai la question qui est-ce un bon moyen de créer une classe statique et des méthodes d'appel comme ci-dessus? Existe-t-il d'autres façons de l'écrire de manière compétente?

Répondre

1

vous obtiendrez les mêmes fonctionnalités en faisant:

var MyNameSpace = {}; 
MyNameSpace.MyChildStaticClass = { 
    x : function(str) { 
     alert(str); 
    } 
} 
+0

qui est pas vrai. En utilisant votre modèle ici ne ferment pas les méthodes internes et donc ils seraient accessibles de partout. – jAndy

+0

Vous avez absolument raison à ce sujet. Je dirai juste ceci pour mon modèle cependant: c'est lisible :) –