为什么用 $scope.user = $scope.master; $scope.master 会跟着 $scope.user 改变?angular.copy 和 = 号赋值有什么区别呢?新手还没有搞懂,请教各位了。
form = {{user }}
master = {{master}}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你可以这么来理解:
内存里有一段地址储存了
{ firstName: "John", lastName: "Doe" }这个数据,并且最开始用$scope.master指向了它当你
$scope.user = $scope.master的时候,事实上是让二者同时指向了该数据,因此一个变了另外一个也会跟着变当你
$scope.user = angular.copy($scope.master)的时候,先做了一份该数据的拷贝(也就是内存中多了另外一份数据,值是一样的,但地址肯定不同),然后让$scope.user指向了这份拷贝,所以二者指向了不同的内存地址,当然不会相互影响了。记住,这并非 Angular 的特殊情况,而是编程语言的通用基础。
其实就是一个是拷贝数据,一个是拷贝引用。无论何种编程语言都会有这个问题,所以就会有深拷贝这种概念。