Javascript 将控制器定义为通用对象而不是函数是一种不好的做法吗?

Javascript 将控制器定义为通用对象而不是函数是一种不好的做法吗?,javascript,Javascript,只是想知道,如果您有一个控制器是单例的(如中所示,您知道在您的文档中只有一个实例),那么将它定义为通用对象而不是函数有什么不对吗?e、 g: var SomeController = { initialize: function(userId){ this.userId = userId; }, alertUserId: function() { alert(this.userId) } } SomeController.initialize(999); SomeCont

只是想知道,如果您有一个控制器是单例的(如中所示,您知道在您的文档中只有一个实例),那么将它定义为通用对象而不是函数有什么不对吗?e、 g:

var SomeController = {
  initialize: function(userId){
    this.userId = userId;
  },

  alertUserId: function() { alert(this.userId) }
}

SomeController.initialize(999);
SomeController.alertUserId();

是的,你可以这样做,但你也可以让它更具体:

var myApp = myApp || {};


myApp.SomeController = myApp.SomeController || {};

myApp.SomeController = {

}


myApp.SomeController1 = myApp.SomeController1 || {};

myApp.SomeController1 = {

}
在这里,我将所有
控制器
保存在我的应用程序
myApp
中。这称为嵌套命名空间。这里的优点是名称空间之间的冲突更少

var myApp=myApp | |{}
将检查现有的
myApp
如果有,它将添加到其中,否则将创建新的,与
myApp.SomeController=myApp.SomeController |{}相同
myApp.SomeController1=myApp.SomeController1 | |{}


您应该始终在应用程序中至少维护一级嵌套名称页面,以避免冲突,并使功能更加清晰。

这没有错。事实上,这种对象文字模式已经存在一段时间了

进一步阅读:


太棒了,谢谢,我只是没有在任何地方看到过它,这就是为什么我想知道。你可能想详细说明一下你在这里做什么。为什么要创建两个对象,而OP只需要一个?这里究竟什么更“具体”?你发布的内容中有多少与OP的问题有关?wtf正在使用此代码?!只要分配
myApp.SomeController={}
一次,如果你打算在下一行对其进行重击,就不需要用
myApp.SomeController | |{}
检查它是否已经有一个值。看看
如果不存在创建名称空间
部分感谢文章的链接。:)