Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript namespacing pattern / 4 сообщений из 4, страница 1 из 1
17.01.2013, 22:41
    #38114628
scymaks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript namespacing pattern
в 1:32 родилось в моей голове вот что:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
var modules = {};

function add(module) {
    modules[module.name] = module.definition;
    return this;
}

function get(moduleName) {
    return modules[moduleName];
}

add({name: 'test_jQuery', definition: jQuery});

console.log(get('test_jQuery'));
console.log(modules)

var f = get('test_jQuery');

console.log(f(document));



все сработало так как и ожидалось...

но вот эти два метода они же в window все равно находятс....
как этого избежать?
...
Рейтинг: 0 / 0
17.01.2013, 23:01
    #38114638
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript namespacing pattern
scymaksно вот эти два метода они же в window все равно находятс....
как этого избежать?глобальные объекты все равно будут.

исключение - если весь код находится внутри
Код: javascript
1.
2.
3.
(function() {

})();

тогда можно обойтись локальными переменными через механизм замыканий.

а так - посмотри, например, ExtJS - там всё находится внутри объекта Ext
...
Рейтинг: 0 / 0
18.01.2013, 10:48
    #38114948
scymaks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript namespacing pattern
Яростный Меч,

ну так у них все равно ExtJS в window же находится...

или вы предлогаете вот так делать:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
<!DOCTYPE HTML>
<html>
<head>
   ....
   <script type="text/javascript">
   var APP = (function() {
       var modules = {};

       function add(module) {
          modules[module.name] = module.definition;
          return this;
       }

       function get(moduleName) {
          return modules[moduleName];
       }

       add({name: 'test_jQuery', definition: jQuery});

       return {
          add: add,
          get: get
       };
   })();
   </script>
   ...
</head>
<body>
   ...
    <script type="text/javascript">
        var f = APP.get('test_jQuery');
        console.log(f(document));
    </script>
   ...
</body>
</html>
...
Рейтинг: 0 / 0
18.01.2013, 13:52
    #38115374
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript namespacing pattern
scymaksну так у них все равно ExtJS в window же находится...да, о чем я и говорил - как минимум 1 глобальный объект, в котором размещаются все свои.


scymaksили вы предлогаете вот так делать:ну да, норм. вариант.
потом можно будет в АРР добавлять другие модули.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript namespacing pattern / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]