angular.copy를 사용하면 참조를 업데이트하는 대신 새 객체가 만들어져 대상에 할당됩니다 (대상이 제공되는 경우). 그러나 더 있습니다. 딥 카피 후에 발생하는이 멋진 일이 있습니다.
팩토리 변수를 업데이트하는 메소드가있는 팩토리 서비스가 있다고 가정하십시오.
angular.module('test').factory('TestService', [function () {
var o = {
shallow: [0,1], // initial value(for demonstration)
deep: [0,2] // initial value(for demonstration)
};
o.shallowCopy = function () {
o.shallow = [1,2,3]
}
o.deepCopy = function () {
angular.copy([4,5,6], o.deep);
}
return o;
}]);
이 서비스를 사용하는 컨트롤러
angular.module('test').controller('Ctrl', ['TestService', function (TestService) {
var shallow = TestService.shallow;
var deep = TestService.deep;
console.log('****Printing initial values');
console.log(shallow);
console.log(deep);
TestService.shallowCopy();
TestService.deepCopy();
console.log('****Printing values after service method execution');
console.log(shallow);
console.log(deep);
console.log('****Printing service variables directly');
console.log(TestService.shallow);
console.log(TestService.deep);
}]);
위 프로그램을 실행하면 다음과 같이 출력됩니다.
****Printing initial values
[0,1]
[0,2]
****Printing values after service method execution
[0,1]
[4,5,6]
****Printing service variables directly
[1,2,3]
[4,5,6]
따라서 앵귤러 카피를 사용하는 것에 대한 멋진 점은 대상의 참조가 값을 다시 수동으로 다시 할당 할 필요없이 값의 변경에 반영된다는 것입니다.