【问题标题】:exporting deep copy of object in javascript在javascript中导出对象的深层副本
【发布时间】:2022-11-25 06:24:00
【问题描述】:
const obj = {A: 2};
module.exports = JSON.parse(JSON.stringify(obj));

从上述模块导入的每个模块都会收到不同的副本吗?还是他们都会收到相同的副本?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    简短回答:不,它将为每个返回相同的实例。

    长答案:

    我建议您阅读有关模块系统如何在 JavaScript/Node.js 中工作的信息。

    一个好的心理模型是,当一个模块第一次被导入并运行其中的所有代码时,以便在返回它们之前将导出的变量设置为它们应该的样子。

    下次导入时,会返回已经设置好的导出变量。每次导入它时,它不会再次运行模块源。

    如果每次导入都需要不同的对象,则需要通过导出函数而不是值来生成一个对象:

    const obj = {A: 2};
    module.exports = () => JSON.parse(JSON.stringify(obj));
    

    ...之后

    const uniqueObj = require("./mymodule")(); // call function
    

    【讨论】:

      猜你喜欢
      • 2022-11-25
      • 1970-01-01
      • 2016-02-15
      • 2015-12-28
      • 1970-01-01
      • 2019-10-11
      • 2012-01-02
      相关资源
      最近更新 更多