我最近在 Angular 教程中注意到以下代码...
<div ng-app="myApp" ng-controller="formCtrl">
<form novalidate>
First Name:<br>
<input type="text" ng-model="user.firstName"><br>
Last Name:<br>
<input type="text" ng-model="user.lastName">
<br><br>
<button ng-click="reset()">RESET</button>
</form>
<p>form = {{user}}</p>
<p>master = {{master}}</p>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('formCtrl', function($scope) {
$scope.master = {firstName: "John", lastName: "Doe"};
$scope.reset = function() {
$scope.user = angular.copy($scope.master);
};
$scope.reset();
});
</script>
关于行:$scope.user = angular.copy($scope.master);
,这是否可以简化为:$scope.user = $scope .master;
看到 $scope.master
在这种情况下将是一个不可变的常量吗?
最佳答案
当您在 JavaScript 中对对象执行 =
时,您只是分配引用,而不是创建新对象(新引用)。在本例中,angular.copy
创建了一个新对象。
用代码术语来说:
var obj1 = {}, var obj2 = {}
obj1 !== obj2; // true
obj1 = obj2;
obj1 === obj2; // true
obj1 = angular.clone(obj2);
obj1 !== obj2; // true
关于javascript - Angular.copy 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30655365/