私はangularjsを研究しており、角度ライブラリによって提供されるコピーとマージ機能の使用に関する問題があります。ドキュメントによると、コピーはソースオブジェクトの深いコピーを作成し、マージはソースオブジェクトから独自の列挙可能なプロパティをコピーすることによってデスティネーションオブジェクトを深く拡張します。angular.copyとangular.mergeの相違点
Googleは、コピー対拡張またはマージ対拡張を許可します。私が見つけることができるのは、ディープコピーとディープ・エクステンションの概念です。これら2つの違いは何ですか?どちらが優先されますか?
私はplunkerを作成しており、両方とも同じ出力を持っています。
https://plnkr.co/edit/CORt259oczKwpBzh7cNH?p=preview
これは、コントローラ部を有する抜粋です:
<script type="text/javascript">
var app= angular.module("myapp",[]);
app.controller("myctrl",[function(){
var self = this;
self.obj={
val1: 'val1',
val2: 'val2',
val3: [{a:12, b:13}],
val4: {c:23, d:56}
};
self.secobj={};
self.thobj={};
self.forobj={};
self.changeVal = function(){
angular.copy(self.obj, self.secobj);
angular.extend(self.thobj, self.obj);
angular.merge(self.forobj, self.obj);
self.obj.val1 = 'value 1';
self.obj.val2 = 'value 2';
self.obj.val3[0].a = 11223;
self.obj.val3[0].b = 22334;
self.obj.val4.c = 1000;
self.obj.val4.d = 5555;
};
}]);
</script>