我們遇到一些情況,我們需要一個對象複製到另一個對象。在這種情況下,我們可能有兩種解決方案:angular.copy()或angular.extend()。
挑戰我面臨着:
我們知道angular.copy(source, destination)
創建源對象的深層副本,並將其分配到目的地。通過書寫深層複製,我們的意思是創建一個新的引用對象的副本,它的工作正常。
深拷貝代碼:
var mySource = {'name' : 'Rohit', 'age' : '24'}
var myDest = {}
angular.copy(mySource,myDest);
mySource.name = "Jindal";
console.log(mySource); // Object {name: "Jindal", age: "24"}
console.log(myDest); // Object {name: "Rohit", age: "24"}
console.log(mySource.obj === myDest.obj); // false
在這裏,我修改源對象mySource.name = "Jindal"
但它不影響預期目標對象myDest
。 如果我們檢查mySource.obj === myDest.obj
,這會給出錯誤,因爲兩者都指向不同的對象。
現在,我面臨與angular.extend(destination, source)
問題,因爲它創建shallow copy
意味着在這個源和目的地將指向相同的地址。 So, if i will modify source object then it will also reflect in destination object. But it's not happening.
淺拷貝代碼:
var mySource = {'name' : 'Rohit', 'age' : '24'}
var myDest = {}
angular.extend(myDest,mySource);
mySource.name = "Jindal";
console.log(mySource); // Object {name: "Jindal", age: "24"}
console.log(myDest); // Object {name: "Rohit", age: "24"}
console.log(mySource.obj === myDest.obj); // True
的jsfiddle:https://jsfiddle.net/U3pVM/24322/
正如我在我新的,需要幫助瞭解angular.copy()& angular.extend的正常流動( )。
任何即時幫助將非常可觀。謝謝
謝謝..良好的解釋! –