javascript - 有没有办法跨文件在 JavaScript 中创建全局对象?

标签 javascript node.js

我又回来了。我想到了一些我想在多个文件等之间拆分的代码。有了它,我需要一个声明的对象来跟踪所有东西,比如数组、计数变量,以及我需要在整个项目中访问和编辑的东西。

所以,我有一个文件,我在其中声明了各种对象。让我们在树中调用此文件 Constants.js

Main.js
Constants.js
Secondary.js

我在 Constants.js 中声明一个对象,然后我在主文件中要求该对象。之后,我需要使用全局对象在 Secondary.js 中运行一个函数并在其中进行编辑。问题是,如果我在辅助文件中声明它并对其进行编辑,它在 Main.js 文件中不会相同(或更新),对吗?

好的,我的 Constants.js 文件布局如下 -

// Constants.js
exports.Tools = {
  Stack: [],
  Test: "foo",
  Track: 0
  // ...
};

Main.js 中,我需要使用以下代码获取该对象,并编辑其中的内容 -

// Main.js
const Constants = require("./Constants.js");
const Tools     = Constants.Tools;

Tools.Stack.push("Some stuff");

在那之后,我想运行一个函数,就像这样 -

// Main.js
require("./Secondary.js").run(Tools);

然后在函数运行后,Tools 对象需要更新 Secondary.js:run() 对其所做的操作。例如-

// Secondary.js
exports.run = function (Tools) {
  Tools.Test = "bar";
  Tools.Track++;
}

因此,我希望主文件中的对象使用 Secondary.js 对其执行的新值进行更新。

有没有办法在不使用该对象或映射中的函数的情况下发生这种情况?我希望它是一个普通对象。

非常感谢。 ~Q

最佳答案

在主文件中声明全局变量 主.js

 global.Tools = {
  Stack: [],
  Test: "foo",
  Track: 0
  // ...
};

在 Secondary.js 中只需使用该变量作为

global.Tools.Stack.push(value)

在Node.js中全局对象在所有模块中都可用,可以直接使用, 无需导入任何文件。

关于javascript - 有没有办法跨文件在 JavaScript 中创建全局对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55547346/

相关文章:

javascript - 将从 Promise 返回的数据分配给变量对象

javascript - Meteor.js + 外部 Mongo。 Meteor 无法登录 Mongo

javascript - NodeError : The “file” argument must be of type string.使用 Nightmare 时收到的类型对象

javascript - 动态加载 sprite SVG 文件

javascript - 网站 javascript 中的完整背景

javascript - 如何使用 promise ,或在函数完成之前完成 ajax 请求?

node.js - 创建http服务器之前的Nodejs : wait for mongodb connection to be made,

node.js - Node redis,变量在客户端之间共享?

javascript - 如何引用现有 GeoJSON 传单对象的数据?

javascript - 将文件拖过区域时更改拖放区域颜色