AngularJS $ scopes的行为类似于指针

时间:2015-03-24 08:05:58

标签: javascript arrays angularjs

我有类似的东西:

$scope.array1_copy=$scope.array1[$scope.index];

$scope.array1是一个数组,由填充了对象的较小数组组成。 现在,当我对$ scope.array1_copy进行更改时,更改将反映在$ scope.array1中。 我已经阅读了使用angular.copy(),但是这种行为的原因是什么?

亲切的问候; Force0234

2 个答案:

答案 0 :(得分:0)

它与Angular无关,它发生的原因是因为对象和数组在JavaScript中通过引用传递。 您可以使用slice()来克隆数组。

$scope.array1_copy = $scope.array1[$scope.index].slice();

在此处阅读更多内容:http://orizens.com/wp/topics/javascript-arrays-passing-by-reference-or-by-value/

答案 1 :(得分:0)

在javascript中,当您将对象分配给另一个对象时,传递此对象的引用,角度复制创建一个新对象并复制de primitive值并返回此引用。例如:

var object = {
    value: "value",
    value2: "value2",
    ...
}

var object2 = object;
object2.value = "change this value";
console.log(object.value) // must print "change this value"

var value = object.value;
value = "another value";
console.log(object.value) // must print "change this value" mantain the old value

//Deep copy
var object2 = {}
object2.value = object.value;
object2.value2 = object.value2;
object2.value = "another change to this value";
console.log(object.value) // must print "change this value" mantain the old value