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

Этот подход отличается от других методов тем, что позволяет кроме функций и данных видимых снаружи, также определять данные и функции локальные для пространства имен и невидимые снаружи. Код выглядит следующим образом:

  1. App = function()
  2. {
  3.    // public data
  4.    var FooMember = 3;
  5.  
  6.    // public function
  7.    function foo()
  8.    {
  9.      // use private data
  10.      alert(_FooMember);
  11.  
  12.      // call private function
  13.       _foo();
  14.    }
  15.  
  16.    // private data
  17.    var _FooMember = 4;
  18.  
  19.    // private function
  20.    function _foo()
  21.    {
  22.    }
  23.  
  24.    return {
  25.        FooMember: FooMember,
  26.        foo: foo
  27.    }
  28. }();

Использование данного кода очевидно:

  1.    alert(App.FooMember);
  2.    App.foo();

Упомяну заодно и технику имитации enumeration в Javascript. Вместо написания кода типа:

  1.    var STORY_NEW = 1;
  2.    var STORY_UPDATE = 2;
  3.    var STORY_DELETE = 3;
  4.    ……….
  5.    switch (tag)
  6.    {
  7.       case STORY_NEW:; break;
  8.       case STORY_UPDATE:; break;
  9.       case STORY_DELETE:; break;
  10.       …
  11.    }

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

  1.    var StoryAction = {
  2.       New: 1,
  3.       Update: 2,
  4.       Delete: 3,
  5.       ….
  6.    };
  7.    …
  8.    switch (tag)
  9.    {
  10.       case StoryAction.New:; break;
  11.       case StoryAction.Update:; break;
  12.       case StoryAction.Delete:; break;
  13.       …
  14.    }

Надеюсь, что эти два приёма кому-то покажутся полезными.

06. февраля 2009 by Alexey Vasiliev
Categories: javascript | Tags: | Комментарии отключены