gpt4 book ai didi

javascript - nodejs将相同的变量传递给不同的模块

转载 作者:行者123 更新时间:2023-11-30 21:01:05 26 4
gpt4 key购买 nike

在我的应用程序中,我有两个模块,它们都需要一个对象变量,但在它们中,它们稍微改变了它的内容:

In app.js

var example = {title: "test"};
var admin = require('./admin');
var research = require('./research');
admin.data(example);
research.data(example);
console.log(admin.get());
console.log(research.get());

In research.js

var datasnapshot = null;
module.exports = {data: updateData, get: getData};
function updateData(data) {
datasnapshot = data;
}
function getData() {
return datasnapshot
}

In admin.js

var datasnapshot = null;
module.exports = {data: updateData, get: getData};
function updateData(data) {
datasnapshot = data;
datasnapshot.title = "Admin Panel";
}
function getData() {
return datasnapshot
}

问题是,那个拙劣的 console.log() 返回给我 {title: "Admin Panel"},尽管事实上,我只希望它在第二个模块中像这样。预先感谢您的帮助!

最佳答案

The problem is, that botch console.log() return me {title: "Admin Panel"}

因为您将同一个对象传递给两个模块,所以当第二个模块更新值时,它反射(reflect)在第一个模块 也是。

that i only want it to be like so in second module

如果你想确保每个相应的模块都应该使用他们自己的示例对象副本,那么修改你的 updateData 方法以

//for research.js
function updateData(data) {
datasnapshot = JSON.parse(JSON.stringify(data)); //deep copying the object
}

//for admin.js
function updateData(data) {
datasnapshot = JSON.parse(JSON.stringify(data));
datasnapshot.title = "Admin Panel";
}

还有其他深拷贝对象共享的方法here

关于javascript - nodejs将相同的变量传递给不同的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47138270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com