Heim  >  Artikel  >  Web-Frontend  >  Diskussion über JS-Deep-Copy-Beispiele

Diskussion über JS-Deep-Copy-Beispiele

小云云
小云云Original
2018-03-06 14:15:431435Durchsuche

Deep Copy dient zum Kopieren des übergeordneten Objekts in das untergeordnete Objekt, und der Speicher und die nachfolgenden Vorgänge der beiden wirken sich nicht gegenseitig aus. Dieser Artikel teilt Ihnen hauptsächlich die Diskussion von js Deep Copy-Beispielen mit und hofft, allen zu helfen.

(1) Methode 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; 
}

Anwendung:

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) Methode 2

function d_clone(obj) {
    return Object.getPrototypeOf(Object.create(obj));
}

Anwendung :

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) Methode 3

JSON.parse(JSON.stringify(obj)

Erklärung: Die Attribute von obj können keine Funktionen enthalten.

(1) Methode 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; 
}

Anwendung:

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) Methode 2

function d_clone(obj) {
    return Object.getPrototypeOf(Object.create(obj));
}

Anwendung :

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) Methode 3

JSON.parse(JSON.stringify(obj)

Erklärung: Die Attribute von obj können keine Funktionen enthalten.

Verwandte Empfehlungen:

Verwandte Empfehlungen:

Vertiefendes Verständnis der JavaScript-Deep-Copy-Leistung

Was ist js Deep Copy und Shallow Copy und ihre Implementierung

Der Unterschied zwischen JavaScript Shallow Copy und Deep Copy

Das obige ist der detaillierte Inhalt vonDiskussion über JS-Deep-Copy-Beispiele. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn