我遵循我实例化组件的模块模式,但是,很多时候组件只会实例化一次(例如:文章的评论系统)。
现在我在同一个JS文件中实例化。但我想知道这是不是错误的做法?在同一个文件中实例化并且总是只有一次是没有意义的。但与此同时,如果这个文件在页面中,我想要访问我的模块,而不需要从其他地方实例化,如果我需要另一个实例,我只是从别处创建另一个...
以下是我遵循的模式:
ApplicationNamespace.Classname = function() {
// constructor
function privateFunctionInit() {
// private
}
this.privilegedFunction = function() {
// privileged
privateFunction();
};
privateFunctionInit()
};
ApplicationNamespace.Classname.prototype = {
Method: function(){}
}
var class = new ApplicationNamespace.Classname();
你觉得什么,错误的方法,还是这个好?
答案 0 :(得分:2)
我认为这没有任何内在错误。在我的工作中,我们在代码库中有很多使用这种模式的JS类。尽管你基本上将这个类用作单例,但是如果你需要的话,以这种方式构造它可以让你在将来轻松创建更多的实例。
在我自己的项目中,我倾向于不在定义它们的文件中实例化JS类。我有一个单独的脚本,它将实例化页面上所需的任何类,并相应地使用它们。这种方法可能更模块化,但如果你只使用一个实例,那么这主要是一个偏好问题。
如果您确定永远不会使用该类的多个实例,则可以通过使用对象文字表示法创建单例对象来简化操作。