La copie profonde consiste à copier l'objet parent vers l'objet enfant, et la mémoire et les opérations ultérieures des deux copies ne s'affecteront pas mutuellement. Cet article partage principalement avec vous la discussion sur les exemples de copie profonde js, dans l'espoir d'aider tout le monde. .
(1) Méthode 1
function copy(obj1,obj2){ var obj2=obj2||{}; for(var name in obj1){ if(typeof obj1[name] === "object"){ //先判断一下obj[name]是不是一个对象 obj2[name]= (obj1[name].constructor===Array)?[]:{}; copy(obj1[name],obj2[name]); //然后来无限递归 }else{ obj2[name]=obj1[name]; //如果不是对象,直接赋值。 } } return obj2; }
Comment utiliser :
var obj1 = { se:[{a:1,b:2},{c:3}], sa:{a:"g"}, sc:function(){console.log(1)} }var n_obj = copy(obj1,{}) console.log(n_obj)
(2) Méthode 2
function d_clone(obj) { return Object.getPrototypeOf(Object.create(obj)); }
Comment utiliser :
var obj1 = { se:[{a:1,b:2},{c:3}], sa:{a:"g"}, sc:function(){console.log(1)} }var n2_obj = d_clone(obj1); console.log(n2_obj)
(3) Méthode 3
JSON.parse(JSON.stringify(obj)
Explication : Les attributs de obj ne peuvent pas contenir de fonctions.
(1) Méthode 1
function copy(obj1,obj2){ var obj2=obj2||{}; for(var name in obj1){ if(typeof obj1[name] === "object"){ //先判断一下obj[name]是不是一个对象 obj2[name]= (obj1[name].constructor===Array)?[]:{}; copy(obj1[name],obj2[name]); //然后来无限递归 }else{ obj2[name]=obj1[name]; //如果不是对象,直接赋值。 } } return obj2; }
Comment utiliser :
var obj1 = { se:[{a:1,b:2},{c:3}], sa:{a:"g"}, sc:function(){console.log(1)} }var n_obj = copy(obj1,{}) console.log(n_obj)
(2) Méthode 2
function d_clone(obj) { return Object.getPrototypeOf(Object.create(obj)); }
Comment utiliser :
var obj1 = { se:[{a:1,b:2},{c:3}], sa:{a:"g"}, sc:function(){console.log(1)} }var n2_obj = d_clone(obj1); console.log(n2_obj)
(3) Méthode 3
JSON.parse(JSON.stringify(obj)
Explication : Les attributs de obj ne peuvent pas contenir de fonctions.
Recommandations associées :
Recommandations associées :
Compréhension approfondie des performances de copie approfondie de JavaScript
Qu'est-ce que js deep copy Et la copie superficielle et sa mise en œuvre
La différence entre la copie superficielle JavaScript et la copie profonde
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!