通过引用传递到尝试更新参数的导入函数?

问题描述 投票:0回答:1

请假设 main.js 模块导入了一组函数,这些函数是 main.js 注册的事件监听器的事件处理程序;并且,当调用导入的处理函数时,main.js 中的对象(未导出到其他模块)将作为这些函数中的参数传递,并且这些函数会尝试更改传递对象中的属性值。

当我测试它时,对象(随后在 main.js 中使用时)反映了在其他模块中所做的更改。

模块之间的对象可以依赖引用传递吗?或者这些对象必须从 main.js 导出并由其他模块导入吗?

谢谢你。

javascript module
1个回答
0
投票
  1. 答案是肯定的,因为对象是作为参数分配/传递的,所以您可以期望模块之间有相同的行为。但有一些注意事项。
  2. 封装原则意味着模块应该共享尽可能少的数据。因此,共享更少的数据并与功能(您的数据接口/API/协议)进行通信。
  3. 针对全局状态管理(模块中的数据)的函数式编程的一个案例:避免使用重写对象引用。拥有许多对象很难管理,您可以覆盖一个引用,但忘记更新另一个引用。对所有对象使用
    const
    并使用
    Object.assign
    更新。这样您就可以确保所有对象都是真实的,并且不会与对象引用混淆。

所以基本上,如果你关心封装,你的模块中应该有一个稳定的私有未引用(非共享)对象。

© www.soinside.com 2019 - 2024. All rights reserved.