奇怪的angularJs变量行为

时间:2014-12-22 15:17:30

标签: javascript angularjs

请解释一下这种行为。我已经对两个变量进行了decalred。

$scope.data = {'value' : 123};
    $scope.v1 = $scope.data;

现在,如果我改变了值

$scope.data.value = 2;

并尝试打印

alert('old value is '+$scope.v1.value);

它给我的输出为2,而我认为它应该给我的值为123。 请告诉我,它与 Java 的行为相同,其中一个变量具有不同的实例,而一个变量反映在另一个变量中?

2 个答案:

答案 0 :(得分:1)

当您将$ scope.data分配给$ scope.v1时,您猜测自己没有创建新对象。您只是将$ scope.v1“指向”$ scope.data,这意味着您对$ scope.data所做的任何更改也将反映在$ scope.v1中。

如果您想拥有不同的元素,则应该复制该对象。看angular.copy

答案 1 :(得分:1)

是。您想使用angular.copy()来解决当前问题。

无论如何,这一切都发生是因为使一个Object等于另一个是分配引用;没有创建副本。