Heim > Web-Frontend > js-Tutorial > Hauptteil

Diskussion über JS-Deep-Copy-Beispiele

小云云
Freigeben: 2018-03-06 14:15:43
Original
1370 Leute haben es durchsucht

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; 
}
Nach dem Login kopieren
Nach dem Login kopieren

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)
Nach dem Login kopieren
Nach dem Login kopieren

(2) Methode 2

function d_clone(obj) {
    return Object.getPrototypeOf(Object.create(obj));
}
Nach dem Login kopieren

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)
Nach dem Login kopieren
Nach dem Login kopieren

(3) Methode 3

JSON.parse(JSON.stringify(obj)
Nach dem Login kopieren

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; 
}
Nach dem Login kopieren
Nach dem Login kopieren

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)
Nach dem Login kopieren
Nach dem Login kopieren

(2) Methode 2

function d_clone(obj) {
    return Object.getPrototypeOf(Object.create(obj));
}
Nach dem Login kopieren

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)
Nach dem Login kopieren
Nach dem Login kopieren

(3) Methode 3

JSON.parse(JSON.stringify(obj)
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!