Maison > interface Web > js tutoriel > le corps du texte

Discussion sur les exemples de copie profonde js

小云云
Libérer: 2018-03-06 14:15:43
original
1418 Les gens l'ont consulté

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; 
}
Copier après la connexion
Copier après la connexion

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)
Copier après la connexion
Copier après la connexion

(2) Méthode 2

function d_clone(obj) {
    return Object.getPrototypeOf(Object.create(obj));
}
Copier après la connexion

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)
Copier après la connexion
Copier après la connexion

(3) Méthode 3

JSON.parse(JSON.stringify(obj)
Copier après la connexion

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; 
}
Copier après la connexion
Copier après la connexion

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)
Copier après la connexion
Copier après la connexion

(2) Méthode 2

function d_clone(obj) {
    return Object.getPrototypeOf(Object.create(obj));
}
Copier après la connexion

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)
Copier après la connexion
Copier après la connexion

(3) Méthode 3

JSON.parse(JSON.stringify(obj)
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!