首页 > 解决方案 > 添加到数组的对象是按值传递的?

问题描述

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

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

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

this.array = [a,b];

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

有人可以解释为什么吗?

谢谢。

标签: javascriptarraysangular

解决方案


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

array = [a, b];

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

现在当你走

a = {} //Some instance of an object

这根本不会影响数组,因为它不知道 undefined 来自哪里。


推荐阅读