Pull to refresh

Пространство имён в Javascript-коде 2

Reading time1 min
Views8.1K
Прочитав заметку об использовании пространств имён в Javascript коде мне захотелось поделиться подходом, который использую я. Он изобретён не мной, конечно, но, возможно кто-то о нём не знает. Этот подход отличается от предложенных в той статье тем, что позволяет кроме функций и данных видимых снаружи, также определять данные и функции локальные для пространства имен и невидимые снаружи.



Код выглядит следующим образом:

App = function()
{
   // public data
   var FooMember = 3;

   // public function
   function foo()
   {
     // use private data
     alert(_FooMember);

     // call private function
      _foo();
   }
   
   // private data
   var _FooMember = 4;

   // private function
   function _foo()
   {
   }

   return {
       FooMember: FooMember,
       foo: foo
   }
}();


Использование данного кода очевидно:
   alert(App.FooMember);
   App.foo();


Раз уж речь пошла о пространствах имен, упомяну заодно и технику имитации enumeration в Javascript. Вместо написания кода типа:
   var STORY_NEW = 1;
   var STORY_UPDATE = 2;
   var STORY_DELETE = 3;
   ..........
   switch (tag) 
   {
      case STORY_NEW: ...; break;
      case STORY_UPDATE: ...; break;
      case STORY_DELETE: ...; break;
      ...
   }


можно написать следующее:

   var StoryAction = {
      New: 1,
      Update: 2,
      Delete: 3,
      ....
   };
   ...
   switch (tag) 
   {
      case StoryAction.New: ...; break;
      case StoryAction.Update: ...; break;
      case StoryAction.Delete: ...; break;
      ...
   }


Надеюсь, что эти два приёма кому-то покажутся полезными.
Tags:
Hubs:
Total votes 17: ↑16 and ↓1+15
Comments42

Articles