Я следую за шаблоном модуля, где я инстанцирую компонентов, однако, много времени, которым только будет компонент, инстанцирует одного времени (пример: система комментария для статьи).
На данный момент я инстанцирую в том же файле JS. но я задавался вопросом, является ли это неправильный подход? Отчасти не имеет никакого смысла инстанцировать в том же файле и всегда только однажды. Но в то же время если этот файл находится на странице, я хочу иметь доступ к своему модулю без, инстанцируют откуда-либо, и ЕСЛИ мне нужен другой экземпляр, я просто создаю другого откуда-либо...
Вот шаблон, за которым я следую:
ApplicationNamespace.Classname = function() {
// constructor
function privateFunctionInit() {
// private
}
this.privilegedFunction = function() {
// privileged
privateFunction();
};
privateFunctionInit()
};
ApplicationNamespace.Classname.prototype = {
Method: function(){}
}
var class = new ApplicationNamespace.Classname();
Что Вы думаете, неправильно приближаетесь, или действительно ли это хорошо?
Я не думаю, что в этом есть что-то принципиально неправильное. У нас есть много JS-классов в кодовой базе на моей работе, которые используют этот шаблон.Несмотря на то, что вы по существу используете класс как синглтон, его структурирование таким образом позволяет с легкостью создавать больше экземпляров в будущем, если вам когда-нибудь понадобится.
В моих собственных проектах я стараюсь не создавать экземпляры классов JS из файла, который их определяет. У меня есть отдельный скрипт, который создаст экземпляры любых классов, необходимых на странице, и будет работать с ними соответствующим образом. Этот подход, вероятно, более модульный, но если вы когда-либо используете только один экземпляр, это в основном вопрос предпочтений.
Если вы уверены, что никогда не собираетесь использовать более одного экземпляра класса, вы можете упростить задачу, создав одноэлементный объект с буквальной нотацией объекта.