Инстанцируйте модуля JavaScript только в один раз

Я следую за шаблоном модуля, где я инстанцирую компонентов, однако, много времени, которым только будет компонент, инстанцирует одного времени (пример: система комментария для статьи).

На данный момент я инстанцирую в том же файле JS. но я задавался вопросом, является ли это неправильный подход? Отчасти не имеет никакого смысла инстанцировать в том же файле и всегда только однажды. Но в то же время если этот файл находится на странице, я хочу иметь доступ к своему модулю без, инстанцируют откуда-либо, и ЕСЛИ мне нужен другой экземпляр, я просто создаю другого откуда-либо...

Вот шаблон, за которым я следую:

  ApplicationNamespace.Classname = function() {
      // constructor    
      function privateFunctionInit() {
          // private
      }
      this.privilegedFunction = function() {
          // privileged
          privateFunction();
      };
   privateFunctionInit()
  };
  ApplicationNamespace.Classname.prototype = {
      Method: function(){}
  }
  var class = new ApplicationNamespace.Classname();

Что Вы думаете, неправильно приближаетесь, или действительно ли это хорошо?

1
задан Cedric Dugas 29 May 2010 в 23:42
поделиться

1 ответ

Я не думаю, что в этом есть что-то принципиально неправильное. У нас есть много JS-классов в кодовой базе на моей работе, которые используют этот шаблон.Несмотря на то, что вы по существу используете класс как синглтон, его структурирование таким образом позволяет с легкостью создавать больше экземпляров в будущем, если вам когда-нибудь понадобится.

В моих собственных проектах я стараюсь не создавать экземпляры классов JS из файла, который их определяет. У меня есть отдельный скрипт, который создаст экземпляры любых классов, необходимых на странице, и будет работать с ними соответствующим образом. Этот подход, вероятно, более модульный, но если вы когда-либо используете только один экземпляр, это в основном вопрос предпочтений.

Если вы уверены, что никогда не собираетесь использовать более одного экземпляра класса, вы можете упростить задачу, создав одноэлементный объект с буквальной нотацией объекта.

2
ответ дан 3 September 2019 в 00:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: