为了重构一个大项目,在Javascript中声明一个对象等于自己可以吗

Is it ok to declare an object to be equal to itself in Javascript for the sake of refactoring a large project

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

var app = {};

除此之外,应用程序中的所有内容都是这样编写的。

app.somefunction = function(args, callback) { 
    some code
};

这显然允许作者轻松使用 Eclipse IDE "outline",我承认我已经开始享受它了,以前从未成为过 IDE 用户我是成为他们提供的精致的皈依者。

我的问题是,当我对这个庞大的代码库进行分阶段重构时,可能会尝试将其合并到某种更成熟的框架中,也许使用 require.js 之类的东西,拆分 "app.js" 分成更小的文件,为了理智,可以使用 IDE 大纲声明应用程序在每个文件中都等于它自己。

app = app;

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

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

这样做没问题。

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

var app = app || {};

仅当变量还没有值时才对其进行初始化。如果它已经有一个值,它将完全等同于您的 app = app;

这项技术也可用于初始化一个大对象,就像您在多个块中所做的那样,允许您随意重新排序和省略块,同时确保没有块会通过执行 var app = {}