You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript模块导出对象:导入时获取引用还是深拷贝?

模块导出对象后,导入得到的是引用还是深拷贝?

当你通过module.exports导出对象obj时,其他模块导入后拿到的是原对象的引用,不是深拷贝。

Node.js的CommonJS模块系统里,导出的是值的引用。导入的变量和原模块里的obj指向内存中同一个对象实例。

举个实际例子就能看明白:

  • 导出模块(比如叫objModule.js):
const obj = {A: 2}
module.exports = obj
  • 导入模块:
const importedObj = require('./objModule.js');
// 修改导入对象的属性
importedObj.A = 3;

这时候返回objModule.js查看obj.A,会发现它的值已经变成了3——这就说明两个变量指向的是同一个对象,并不是各自独立的拷贝。

要是你想让导入的模块拿到一个和原对象完全独立的深拷贝,得自己手动处理,比如用JSON.parse(JSON.stringify(obj))这种方式导出拷贝后的对象,或者写递归克隆函数来实现深拷贝。

内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 18:20:28