Javascript 将大对象作为纯参数或对象传递
我的问题很简单,Javascript 将大对象作为纯参数或对象传递,javascript,node.js,es6-modules,Javascript,Node.js,Es6 Modules,我的问题很简单,veryLargeObj会在这两个版本中作为参考传递吗?如果是,除了对象创建之外,这两个示例之间是否存在性能影响 示例1: 从“/此处”导入veryLargeObj 函数someFn(veryLargeObj){ ... } 示例2: 从“/此处”导入veryLargeObj 函数someFn({veryLargeObj}){ ... } 另外,示例2参数的创建方式是否如下所示: {"veryLargeObj&q
veryLargeObj
会在这两个版本中作为参考传递吗?如果是,除了对象创建之外,这两个示例之间是否存在性能影响
示例1:
从“/此处”导入veryLargeObj
函数someFn(veryLargeObj){
...
}
示例2:
从“/此处”导入veryLargeObj
函数someFn({veryLargeObj}){
...
}
另外,示例2参数的创建方式是否如下所示:
{"veryLargeObj": veryLargeObj}
normal property name -------^^^^^^^^^^^^ ^^^^^^^^^^^^------- reference to large obj?
是的,它们将是完全相同的对象。例如,如果第一个模块导入了第二个模块并以某种方式相互交互,那么他们会看到导入的对象是
=
正如您所指出的,唯一重要的开销是在对象创建时。ES6模块的顶层只运行一次,即使它导入了多个位置
但我认为你的符号有点混淆了:
import veryLargeObj from './here'
function someFn(veryLargeObj){
...
}
在这里,您没有在任何地方使用大型对象,而是声明someFn
接受一个名为veryLargeObj
的参数。如果要使用导入,请执行以下操作
import veryLargeObj from './here'
function someFn(){
// use veryLargeObj here
}
或
其他模块也一样
import veryLargeObj from './here'
function someFn(veryLargeObj){
// use veryLargeObj here
}
someFn(veryLargeObj);