Vue copia superficial copia profunda

Un resumen simple de copia superficial y copia profunda

La copia superficial solo copia el puntero a un objeto, no el objeto en sí, y los objetos nuevos y antiguos aún comparten la misma memoria. Sin embargo, la copia profunda creará un objeto idéntico. El nuevo objeto no comparte memoria con el objeto original y las modificaciones al nuevo objeto no cambiarán el objeto original.

copia superficial

// 拷贝对象
{
    
    ..objValue}
// 拷贝数组
[...arrValue]

Copia profunda 1 (no recomendado)

// value为要拷贝对象
JSON.parse(JSON.stringify(value))

JSON.parse(JSON.stringify()) copia objetos de tiempo, objetos de error, expresiones regulares, funciones o valores indefinidos y otros. Este método causará problemas.

  1. Si hay un objeto de tiempo en json, el resultado de la serialización es: objeto de tiempo => forma de cadena
  2. Si hay objetos RegExp y Error en json, el resultado de la serialización solo obtendrá objetos vacíos RegExp y Error => {}
  3. Si hay una función indefinida en json, el resultado de la serialización perderá la función indefinida.
  4. Si hay NaN, Infinity y -Infinity en json, el resultado de la serialización será nulo
  5. Si hay un objeto en json generado por un constructor, el resultado de la serialización descartará el constructor del objeto.
  6. La copia profunda no se puede implementar si hay una referencia circular en el objeto.

copia profunda 2

Usando cloneDeep en Lodash

Documentación oficial

import {
    
     cloneDeep } from 'lodash-es'
// value为要拷贝对象
cloneDeep(value)

Supongo que te gusta

Origin blog.csdn.net/weixin_44872023/article/details/121762316
Recomendado
Clasificación