js usa la recursividad para lograr copia superficial y copia profunda

Copia superficial: no se pueden copiar atributos complejos en objetos como matrices y objetos de referencia internos

        // Usa la recursión para lograr una copia superficial y profunda de js 
        var obj1 = {
            nombre: 'zs' ,
            edad: 18 ,
            perro:{
                nombre: 'ruibarbo' ,
                edad: 3
            }
        };

        var obj2 = {};

        // Complete la copia del objeto. La copia superficial puede copiar principalmente algunos atributos básicos. Los atributos del objeto no se pueden copiar. Cuando se cambia el objeto original y el atributo del objeto pertenece, el objeto copiado también cambiará. 
        Para ( clave var en obj1) {
            obj2 [clave] = obj1 [clave];
        }

        obj1.dog.name = "xxxxxxx"; // aunque obj2 anterior copia obj1, obj2 también se corregirá cuando cambie el objeto de obj1. Esto se denomina copia superficial 
        
        console.dir (obj2);

 

 

Copia profunda: existen dos objetos completamente independientes

       // Objeto 1 
    var obj1 = { nombre: 'zs' , edad: 18 , perro:{ nombre: 'ruibarbo' , edad: 3 }, coches: [ "qq", "jeep" ] };
     // Objeto 2
var obj2 = {}; función deepCopy (source, target) { for ( var key in source) { var item = source [key]; if (item instanceof Object) { target [key] = {}; // Define un objeto vacío para recibir el contenido copiado deepCopy (item, target [key]); // Llamada recursiva } else if (item instanceof Array) { objetivo [clave] = []; deepCopy (elemento, objetivo [clave]); } más { objetivo [clave] = fuente [clave]; } } } deepCopy (obj1, obj2); obj1.dog.name = "xxxxxxx" ; console.dir (obj1); console.dir (obj2);

 

Supongo que te gusta

Origin www.cnblogs.com/gaoSJ/p/12727095.html
Recomendado
Clasificación