添加到数组的对象是按值传递的吗?

时间:2019-01-30 21:10:30

标签: javascript arrays angular

在Angular上下文中,我正在使用通过接口定义的自定义对象,比如说“ a”和“ b”。 我正在将它们创建为类属性,以及这些属性的空数组。

   public a: CustomObj;
   public b: CustomObj;
   public array: CustomObj[]=[];

在类构造函数中,我用a和b填充数组,当时它们没有值。

this.array = [a,b];

在某些时候,我修改了a或b(具有([ngModel])绑定),但是当尝试通过Array访问那些对象时,它们仍然是“未定义的”。

有人可以解释为什么吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

a和b是引用对象,它们保存对内存中对象实例的引用。当你走

array = [a, b];

您现在有了一个[undefined,undefined]的数组,因为它们都没有指向对象的实例。

现在就去

a = {} //Some instance of an object

这根本不影响数组,因为它不知道未定义的来源。