javascript - 为了重构一个大项目,在Javascript中声明一个对象等于它自己是否可以?

标签 javascript eclipse oop refactoring

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

var app = {};

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

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

这显然使作者能够轻松地使用 Eclipse IDE“大纲”,我承认我已经开始享受拥有它,以前从未成为 IDE 用户,我正在转变为他们提供的细节。

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

app = app;

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

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

最佳答案

这样做没有问题。

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

var app = app || {};

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

此技术对于初始化大型对象(如多个 block 中的对象)也很有用,允许您随意重新排序和省略 block ,同时通过执行 var app = {} 确保没有 block 会删除另一个 block 的初始化。

关于javascript - 为了重构一个大项目,在Javascript中声明一个对象等于它自己是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30170198/

相关文章:

javascript - 如何在 hr :after in javascript? 上设置数据内容

javascript - 手动创建 JavaScript 事件对象

c++ - 在开关中声明类对象,然后在开关外使用该变量

eclipse - 运行 play2 和 eclipse 时,我可以避免编译源代码两次吗?

Java 应用程序无法在命令行上运行,但在 Eclipse 中正常

c# - 通用类多态性

java - 单例和其他设计问题

javascript - 使用模板时如何在 div 上添加可拖动功能

javascript - 无法使用 Javascript 选择 HTML 元素

java - 使用 Tomcat 和 Eclipse 的远程开发工作流