javascript - 添加到数组的对象是按值传递的?
问题描述
在 Angular 上下文中,我正在使用通过接口定义的自定义对象,比如说“a”和“b”。我将它们创建为类属性,以及这些属性的空数组。
public a: CustomObj;
public b: CustomObj;
public array: CustomObj[]=[];
在类构造函数中,我用 a 和 b 填充数组,当时它们没有值。
this.array = [a,b];
在某些时候,我修改了 a 或 b(使用 ([ngModel]) 绑定),但是当尝试通过数组访问这些对象时,它们仍然是“未定义的”。
有人可以解释为什么吗?
谢谢。
解决方案
a 和 b 是引用对象,它们持有对内存中对象实例的引用。当你去
array = [a, b];
您现在有一个带有 [undefined, undefined] 的数组,因为两者都没有指向对象的实例。
现在当你走
a = {} //Some instance of an object
这根本不会影响数组,因为它不知道 undefined 来自哪里。
推荐阅读
- python-3.x - 使用pip安装pyqt5时如何解决元数据轮错误
- firebase - 有没有办法在 Flutter 应用程序中缓存音频文件 From Firebase
- python - 使用谷歌翻译 API 翻译数据框时出错
- reactjs - 用 axios 反应 useEffect 钩子无法读取未定义的属性
- python - 在列表中合并元组 - Spacy Trainset 相关
- mysql - 如何在 Hive 或 Spark 中的 GROUP BY 之后将 INNER JOIN 函数聚合到每个组
- roblox - 使用 Terrain:FillRegion() 的区域不能为空错误?
- hyperlink - 链接到位于另一个页面中的锚点/ID
- python - 如何使用 contractDetails() 中的值更新函数 tickPrice() 的参数?
- scala - 解压缩存储在 Azure ADLS Gen2 中的 .Z 文件