Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Bad & Best practices / 9 сообщений из 9, страница 1 из 1
15.01.2013, 13:41
    #38110631
scymaks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bad & Best practices
Чем вот такой подход
Код: javascript
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.
(function($) {
   var Component = function(parameters) {
      var logger = Logger.getLogger((parameters.name && (typeof(parameters.name) == 'string')) || '');

      /* Component properties */
      var properties = {
      };
      
      /* Component methods */
      var methods = {
         init: function(parameters) {
            $.extend(properties, parameters);
         },
         doSomething: function() {
            ...
         }
      };

      /* Component constructor */
      (function() {
         methods.init(parameters);
      })();

      return {
         doSomething: methods.doSomething
      };
   };
})(jQuery);



хуже / лучше вот такого
Код: javascript
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.
(function($) {
   function Component(parameters) {
      var logger = Logger.getLogger((typeof(parameters.name) == 'string') || '');

      /* Component properties */
      var properties = {};

      /* Component methods */
      var methods = {
         init: function(parameters) {
            $.extend(properties, parameters);
         },
         doSomething: function() {
            ...
         }
      };

      /* Component constructor */
      methods.init();
      
      return {
         doSomething: methods.doSomething
      };
   };
   
   window.Component = Component;
})(jQuery);

console.log(new Component({}));
...
Рейтинг: 0 / 0
15.01.2013, 14:00
    #38110676
scymaks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bad & Best practices
такой подход

Код: javascript
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.
(function($) {
   window.Component = function(parameters) {
      var logger = Logger.getLogger((typeof(parameters.name) == 'string') || '');

      /* Component properties */
      var properties = {};

      /* Component methods */
      var methods = {
         init: function(parameters) {
            $.extend(properties, parameters);
         },
         doSomething: function() {
            ...
         }
      };

      /* Component constructor */
      methods.init();
      
      return {
         doSomething: methods.doSomething
      };
   };
})(jQuery);



или вот так:


Код: javascript
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.
(function($) {
   window.Component = function(parameters) {
      var logger = this.getLogger(parameters.name);

      /* Component properties */
      var properties = {};

      /* Component methods */
      var methods = {
         init: function(parameters) {
            $.extend(properties, parameters);
         },
         doSomething: function() {
            ...
         }
      };

      /* Component constructor */
      methods.init();
      
      return {
         doSomething: methods.doSomething
      };
   };

   Component.prototype.getLogger = function(loggerName) {
      return Logger.getLogger(typeof(loggerName) == 'string' ? loggerName : '');   
   };
})(jQuery);
...
Рейтинг: 0 / 0
15.01.2013, 17:27
    #38111120
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bad & Best practices
scymaks,

2й вариант будет работать незначительно быстрее остальных, особенности стандарта.
3 и 4й варианты считаются моветоном, т.к. вы гадите в виндоу, для браузера пофиг, но какой-нить среде разработки может не понравится, т.к. современный js иногда может не иметь объекта window.

А применять надо тот подход, который принят там, где вы работаете.
...
Рейтинг: 0 / 0
15.01.2013, 17:29
    #38111127
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bad & Best practices
и три равно, ===, три пишите, а не два...
...
Рейтинг: 0 / 0
15.01.2013, 17:50
    #38111169
scymaks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bad & Best practices
mage.lan,

Спасибо, за отзыв!

Ну мы пока в поисках соглашения о "написании" кода...

А вообще вот как бы если хочется создать какой-то базовый компонент а потом от него наследовать другие компоненты, то что делать? Надо же в window лезть... Как по-другому-то...(
...
Рейтинг: 0 / 0
16.01.2013, 15:10
    #38112330
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bad & Best practices
scymaksmage.lan,

Спасибо, за отзыв!

Ну мы пока в поисках соглашения о "написании" кода...

А вообще вот как бы если хочется создать какой-то базовый компонент а потом от него наследовать другие компоненты, то что делать? Надо же в window лезть... Как по-другому-то...(

Необязательно - рекомендую ознакомиться с техникой AMD - Require.js
Очень помогает переосмыслить и правильно организовать структуру приложения (причем require(some_module) необязательно грузит что-то с сервера - модуль может быть описан в том же файле скрипта - главное независимость модулей и незагаживания неймспейсами и переменными глобального пространства + попутно повышается безопасность)
...
Рейтинг: 0 / 0
17.01.2013, 13:04
    #38113759
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bad & Best practices
scymaks,

Читаете книжку:
Resig John. Pro JavaScript Techniques
вроде есть в переводе, если попрет, берете гуру Резига:
Douglas Crockford. JavaScript: The Good Parts
Думаю после крокфорда вопросов не останется.

Ну и смешная рекомендация, стандарт почитайте.
...
Рейтинг: 0 / 0
17.01.2013, 17:32
    #38114353
scymaks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bad & Best practices
mage.lan,

спасибо за рекомендацию, прочту.
...
Рейтинг: 0 / 0
26.01.2013, 17:19
    #38125774
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bad & Best practices
Есть еще один метод, малоиспользуемый (его твиттер использует) - Функциональные Миксины http://jslang.info/blog/functional-mixins

Вообше все эти хитрые скоупы выглядят довольно громозко, можно выбрать несколько топовых проектов на гитхабе - и посмотреть как они сделаны, там восвновном обычные прототипы.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Bad & Best practices / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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