我又回来了。我想到了一些我想在多个文件等之间拆分的代码。有了它,我需要一个声明的对象来跟踪所有东西,比如数组、计数变量,以及我需要在整个项目中访问和编辑的东西。
所以,我有一个文件,我在其中声明了各种对象。让我们在树中调用此文件 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/