我们遇到一些情况,我们需要一个对象复制到另一个对象。在这种情况下,我们可能有两种解决方案: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的正常流动( )。
任何即时帮助将非常可观。谢谢
谢谢..良好的解释! –