Javascript 在react中导入js对象时的内存

Javascript 在react中导入js对象时的内存,javascript,reactjs,Javascript,Reactjs,我不熟悉react及其生成javascript的透明方式 在react端,我有一个类实用程序,它使用一个数据对象UserData,组织如下- UserDataObj.js class UserData{ this.someobj = {}; //some function here something(){ } } const UserDataObj = new UserData(); export {UserDataObj}; Utility.js import {Use

我不熟悉react及其生成javascript的透明方式

在react端,我有一个类
实用程序
,它使用一个数据对象
UserData
,组织如下-

UserDataObj.js

class UserData{
  this.someobj = {};
  //some function here
  something(){

  }
}

const UserDataObj = new UserData();
export {UserDataObj};
Utility.js

import {UserDataObj} from './data/UserDataObj';
class Utility {
    doSomething(){
      //UserDataObj.something();
    }
}
const utility = new Utility();
export {utility};
我有另一个ReactApp UserApp.js,它也使用UserDataObj和实用程序(尽管不是很好的设计)-

我的问题是,当呈现
UserApp
时,将在内存中创建多少
utility
UserDataObj
实例。我的猜测是,这两种情况应该只有一个。但是我想确认是否每次导入
n
times都会创建一个新实例

任何关于这个话题的好文章都将不胜感激


谢谢

这取决于捆绑工具,而不是反应。我认为新的浏览器ES模块解析方案也以同样的方式工作

据我所知,大多数绑定器和其他导入方案(如Node.js’
需要
模块解析)将缓存文件之间的导入,并始终返回相同的导出对象。这是原型继承的一个要求,例如,否则,它会弄乱
instanceof
操作符


导出的
new Utility()
实例对于导入它的任何模块都是相同的。为了生成新实例,您必须有一个函数。

只是为了澄清一下,在同一执行环境中运行的任何其他脚本都将共享相同的导入对象。这将不适用于浏览器页面、不同机器等。感谢Marcus的确认。
import {UserDataObj} from './data/UserDataObj';
import {utility} from './Utility';
class UserApp extends React.Component{
    //does something with UserDataObj
    // also does somethign with utility
}