我很好奇组织大型对象结构的标准或常用方法是什么。我的第一反应是如此组织它:
GLOBAL = {
child_1 : {
obj_1 : null,
obj_2 : null,
func_1 : function () {
//Stuff defined here....
}
},
child_2 : {
obj_1 : null,
obj_2 : null,
func_1 : function () {
//Stuff defined here....
}
},
child_3 : {
....
};
这一开始很不错,但是随着文件变得越来越大并且函数被定义,特别是当函数具有相同的名称时,例如“GLOBAL.child_1.func_1”和“GLOBAL.child_2”,它变得难以阅读。 func_1" 。
是否有构建大型应用程序的标准方法?我可以保持它漂亮的一种方式,我认为是在别处定义函数而不是在对象层次结构中。
答案 0 :(得分:4)
我也很挣扎。以下是一些我发现具有启发性的博客文章:
http://michaux.ca/articles/javascript-namespacing
http://javascriptweblog.wordpress.com/2010/12/07/namespacing-in-javascript/#more-1789
答案 1 :(得分:3)
您不必将它们全部放在一个巨大的嵌套结构中。你可以这样做:
var GLOBAL = {};
GLOBAL.child_1 = {
obj_1 : null,
obj_2 : null,
func_1 : function () {
//Stuff defined here....
};
GLOBAL.child_2 = {
obj_1 : null,
obj_2 : null,
func_1 : function () {
//Stuff defined here....
};
GLOBAL.child_3 = {
....
};
另外,我不明白你为什么要使用像child_1和child_2这样的通用名称。如果它们具有独特的功能,那么给它们描述其功能的唯一名称。如果它们都具有相同的功能,那么创建一个可以重复使用的对象,您可以创建多个实例。如果它们都是相同的并且没有唯一的预先声明的数据,那么只需将它们全部初始化即可。
答案 2 :(得分:1)
您的问题非常有趣,其答案可能非常复杂。我将给你一些关于该主题的链接(一些链接指的是jQuery,但这不是限制):
http://addyosmani.com/blog/large-scale-jquery/
http://blog.rebeccamurphey.com/on-jquery-large-applications
另外,我可以给你的一个提示是使用这种模式分离你的代码:
// file yoursite.somename.js
var GLOBAL = GLOBAL || {};
GLOBAL.somename = {
someFunction: function() {}
// [...]
};
// file yoursite.someothername.js
var GLOBAL = GLOBAL || {};
GLOBAL.someothername = {
anotherFunction: function() {}
// [...]
};
使用该模式,每个功能都分成一个文件,每个文件将一个密钥添加到GLOBAL
对象中。该对象将被声明一次,并且永远不会被覆盖。