0

你怎么看这个?它保留了 A 的两个单独副本,这对我的家庭供暖控制器不健康。控制器逻辑将在模块A 和模块B 中的http 服务器接口中运行,它们需要共享属性。我只想要一个属性实例。在 main 和 moduleB 中创建的实例似乎是相同的实例,但与在 moduleA 中的不同。下面是一些测试代码。

运行 main.js 的输出---->

pi@raspberrypi:~/controller $ node main.js

Initializing A by calling control.initializeA(10)....
Show via control.A = -1
Show via control.showA() = 10
Show via  server.showA() = -1

Initializing A from Main by control.A = 3
Show via control.A = 3
Show via control.showA() = 10
Show via  server.showA() = 3

Initializing A from moduleB by server.initializeA(5)
Show via control.A = 5
Show via control.showA() = 10
Show via  server.showA() = 5

模块A.js

module.exports = {
   A: -1,
   initializeA: (value) => {
       this.A = value;
   },
   showA: () => {
       return this.A;
   }
}

模块B.js

let control = require("./moduleA");
exports.showA = () => {
    return control.A;
}
exports.initializeA = (value) => {
    control.A = value;
}

主.js:

let control = require("./moduleA");
let server = require("./moduleB");

console.log("Initializing A by calling control.initializeA(10)....");
control.initializeA(10);
show();

console.log("\nInitializing A from Main by control.A = 3");
control.A = 3;
show();

console.log("\nInitializing A from moduleB by server.initializeA(5)");
server.initializeA(5);
show();


function show(){
    console.log("Show via control.A = " + control.A);
    console.log("Show via control.showA() = " + control.showA());
    console.log("Show via  server.showA() = " + server.showA());
}
4

0 回答 0