【发布时间】:2023-02-03 13:25:12
【问题描述】:
在下面的代码中,我创建了一个名为 Foo 的构造函数,然后创建了一个名为 zzz 的新对象,该对象使用该构造函数并通过引用另一个变量进行调用。
function Foo(bar) {
this.a = bar;
}
const bar = [10, 10, 10];
const zzz = new Foo(bar);
console.log(zzz.a[0]);
bar[0] = 0;
console.log(zzz.a[0]);
这将打印出 10, 0。我希望 zzz.a 被初始化为 bar 的副本,但我发现更改 bar 也会更改 zzz 对象。有人可以解释为什么会这样吗?
【问题讨论】:
-
zzz.a和bar指的是同一个数组。如果需要(浅)拷贝,可以设置this.a = [...bar]。 -
这与将变量传递给任何其他函数没有什么不同。构造函数在这方面并不特殊。
标签: javascript constructor javascript-objects