JSオブジェクトの浅いコピーと深いコピー問題の実践

861 ワード

今日コードを書いて、新しいオブジェクトにオブジェクトを割り当てたいと思いました.新しいオブジェクトに属性を追加すると、古いオブジェクトもこの属性を持っています.これは浅いコピーと深いコピーの問題だと気づきました.今経験をまとめます.
古いオブジェクトA:
 
pageCount:10
pageNo:"1"
sessionId:"C6B1F6B4E84192F17B0BAD6EF389C039"
sourceType:2
tradeTime:1
次のような操作を行います.
 
 
var requestdata = $scope.conditions.request;
requestdata.pluginId = data.pluginId;
古いオブジェクトAが:
 
 
pageCount:10
pageNo:"1"
pluginId:27
sessionId:"C6B1F6B4E84192F17B0BAD6EF389C039"
sourceType:2
tradeTime:1
これは私達が欲しい結果ではありません.Aは変更されるべきではありません.だから、私達は深くコピーします.深いコピー方法はたくさんあります.私はanggurの一つのAPIだけを使いました.
 
 
var requestdata = angular.copy($scope.conditions.request);//angular.copy();      
requestdata.pluginId = data.pluginId;
このように操作すれば、古いオブジェクトAは変更されなくなります.