为了重构一个大型项目,在Javascript中声明一个对象等于它本身可以吗

为了重构一个大型项目,在Javascript中声明一个对象等于它本身可以吗,javascript,eclipse,oop,refactoring,Javascript,Eclipse,Oop,Refactoring,我正在开发一个非常大的javascript web应用程序,它实际上没有一个方法。似乎有人试图将所有内容声明为名为“app”的主对象的一部分。原始程序以单个app.js文件的形式存在,超过300k行代码,其中声明了以下内容: var app = {}; 除此之外,应用程序中的所有内容都是这样编写的 app.somefunction = function(args, callback) { some code }; 这显然让作者能够轻松地使用EclipseIDE“大纲”,我承认我已经

我正在开发一个非常大的javascript web应用程序,它实际上没有一个方法。似乎有人试图将所有内容声明为名为“app”的主对象的一部分。原始程序以单个app.js文件的形式存在,超过300k行代码,其中声明了以下内容:

var app = {};
除此之外,应用程序中的所有内容都是这样编写的

app.somefunction = function(args, callback) { 
    some code
};
这显然让作者能够轻松地使用EclipseIDE“大纲”,我承认我已经开始喜欢它了,以前我从来没有做过IDE用户,现在我正在转变为他们提供的细节

我的问题是,当我对这个庞大的代码库进行分阶段重构时,可能会尝试将其合并到某种更为成熟的框架中,可能会使用require.js之类的东西,拆分“app.js”可以吗升级到更小的文件中,并且为了能够正常使用IDE大纲,声明应用程序在每个文件中与自身相等

app = app;
我已经对此进行了测试,根据我所知,它可以工作,并且它允许IDE将所有后续功能添加到大纲窗口中,同时使项目在我了解其实际操作的同时更易于管理。这样做有什么缺点吗?我想可能会出现一些异步加载问题;这可能会增加客户端开销;还是完全可以接受


我意识到这是一个代码哲学问题,但简单的问答是,app=app会产生什么影响;有吗?

这样做没有问题

事实上,这是非常常见的代码:

var app = app || {};
仅当变量尚未具有值时才初始化该变量。如果它已经有一个值,那么它将完全等同于您的
app=app


这种技术在初始化一个大对象时也很有用,就像你在多个块中一样,允许你随意重新排序和省略块,同时通过执行
var-app={}

确保没有块会擦除其他块的初始化。你应该不会在拆分文件时遇到任何问题。我不明白你为什么需要使用
app=app
,因为它实际上什么都做不了。不管怎样,这可能更适合程序员stack exchange站点;在拆分文件中,不允许Eclipse“解析”该文件。此外,还有异步问题,@CupawnTae的回答很好地解决了。感谢您提出的添加初始化代码的想法,这可以缓解我在处理这一混乱问题时遇到的任何异步问题。