0

我对 AngularJS 行为(一般的 JS 行为)有疑问

我有一个注入控制器的 Angular 工厂。

这是控制器代码的片段

$scope.localObjCollection= myObjFactorySvc.getObjCollection();

假设 myObjFactorySvc.getObjCollection() 返回以下对象

[{"id":1"name":null,"address":null,"email":null},
{"id":2"name":null,"address":null,"email":null},
{"id":3"name":null,"address":null,"email":null},
{"id":4"name":null,"address":null,"email":null},
]

所以,我几乎使用工厂来获取集合并将其存储在 $scope.localObjCollection. 我的问题是确实$scope.localObjCollection有返回的数据的值(副本)getObjCollection()或只是一个参考。

因此,如果在控制器源代码中的某个地方,如果我这样做 $scope.localObjCollection.push(newObj)了,它是否也会更新 Factory 中的原始集合?我应该猜,但我想了解正确的行为

4

1 回答 1

2

JavaScript 中的数组是一个对象,JS 中的对象总是通过引用传递/分配。因此,假设您的myObjFactorySvc.getObjCollection()是这样的,您的代码还将更新 Factory 中的原始集合:

myObjFactorySvc.getObjCollection = function() { return someArrayVariable; }
于 2013-10-12T17:33:50.203 回答