这是避免全局命名空间的另一个问题。
对于我在私人时间工作的Web应用程序,我需要很多不同模块之间共享的对象实例。它是一个单页面应用程序,几乎所有视图基本上都相互连接(MVC透视图)。
我将我的应用程序命名如下:
window.app = {
views : {},
models: {},
collections: {},
functions: {}
};
集合的插图: 条形图信息可以表示为地图上的标记,或列表中的项目,或者显示在配置文件上的信息等... 所以我要做的是创建“bars_Collection”的实例,并以这种方式将其添加到app对象:
app.collections.bars_Collection = New Bar_Collection();
获取数据一次使整个应用程序中的集合数据可用。
视图的另一个例子:
我有一个视图对象,其中包含已更新的标签(关键字)列表,根据它正在被提供的集合(跨类别 - >可以是酒吧,餐馆等...)。所以我会为我添加到app对象的标签提供单一视图,如下所示:
app.views.tags_View = new Tags_View();
虽然我并不害怕名称冲突,但我确实知道我的app对象位于Global名称空间。在向全局app对象添加更多嵌套对象时,我担心应用程序的性能: Why are global variables considered bad practice?
但是,让这些实例(app.views,app.models等)随时可以实现,这非常方便。
我的问题是:你如何评估这种情况,如果你认为这很糟糕 练习,你能给我一个关于更好的方法的实用指针吗?