powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Bad & Best practices
9 сообщений из 9, страница 1 из 1
Bad & Best practices
    #38110631
scymaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем вот такой подход
Код: 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
Bad & Best practices
    #38110676
scymaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такой подход

Код: 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
Bad & Best practices
    #38111120
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scymaks,

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

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

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

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

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

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

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

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

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

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

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

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

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


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