angular.copy()和赋值(=)之间有什么区别?

Ram*_*ran 35 javascript angularjs

我想通过事件参数发生按钮单击事件时分配一些值:

$scope.update = function(context) {
    $scope.master = context;
};
Run Code Online (Sandbox Code Playgroud)

我已经赋值user给了 $scope.master.

现在我看到angular.copy().所以我用angular.copy编写了代码.

$scope.update = function(context) {
    $scope.master = angular.copy(context)
};
Run Code Online (Sandbox Code Playgroud)

两者都是一样的,那有什么区别?请告诉我angular.copy()和之间的区别equal(=).

And*_*rup 48

可以在这里阅读 angular.copy()执行参数的深层复制(参见"克隆") - 实质上是创建一个新对象 - 而使用赋值运算符=只是指定引用.

因此,在后一种情况下,如果你要改变某些东西,$scope.master你也会改变context.

干杯,

  • "="与angular.extend()有何不同.你能解释一下吗? (3认同)

Ash*_*her 10

=表示引用,而angular.copy()将新对象创建为深层副本.

使用=意味着改变属性context会改变相应的属性,$scope.master反之亦然.

使用angular.copy()这两个对象将保持独立,并且更改不会相互反映.