Прочитав заметку об использовании пространств имён в Javascript коде мне захотелось поделиться подходом, который использую я. Он изобретён не мной, конечно, но, возможно кто-то о нём не знает. Этот подход отличается от предложенных в той статье тем, что позволяет кроме функций и данных видимых снаружи, также определять данные и функции локальные для пространства имен и невидимые снаружи.
Код выглядит следующим образом:
Использование данного кода очевидно:
Раз уж речь пошла о пространствах имен, упомяну заодно и технику имитации enumeration в 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;
...
}
Надеюсь, что эти два приёма кому-то покажутся полезными.
