JS对象浅拷贝与深拷贝问题实践

今天写代码发现想把一个对象赋给自己新建的对象,给新对象再添加一个属性时,旧的对象也具有了这个属性,我意识到这是浅拷贝与深拷贝的问题了,只不过之前一直没实际遇到过这个问题。现在把经验总结一下:

旧对象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不应该被改变,所以我们要进行深拷贝,深拷贝方法有很多,我只用了angualr的一个API:

 

 

var requestdata = angular.copy($scope.conditions.request);//angular.copy();可进行深拷贝
requestdata.pluginId = data.pluginId;


如此操作后,旧对象A就不会被改变了,亲测有效。

 

你可能感兴趣的:(JavaScript)