Cópia Profunda de Objetos em JavaScript sem Gambiarras Usando structuredClone

Cópia Profunda de Objetos em JavaScript sem Gambiarras Usando structuredClone

Clonar objetos complexos com estruturas aninhadas em JavaScript costumava exigir a perda de tipos de dados ao usar JSON.parse(JSON.stringify()) ou o uso de bibliotecas pesadas. A função nativa structuredClone() resolve esse problema criando uma cópia profunda (deep clone) completa, preservando referências circulares, datas, expressões regulares e estruturas de dados avançadas.

JavaScript

// Objeto complexo com tipos de dados especiais e aninhamento
const usuarioOriginal = {
  nome: 'Ana Silva',
  criadoEm: new Date('2023-05-15'),
  preferencias: { tema: 'escuro', notificacoes: true },
  historico: new Set(['login', 'compra', 'logout']),
};

// Realizando a cópia profunda com a API nativa
const usuarioClonado = structuredClone(usuarioOriginal);

// Alterando o objeto clonado para provar a independência de memória
usuarioClonado.preferencias.tema = 'claro';
usuarioClonado.historico.add('atualizacao_perfil');

// Exemplo de uso prático funcionando
console.log('Original (não alterado):', usuarioOriginal.preferencias.tema); 
// Saída: 'escuro'

console.log('Clonado (alterado):', usuarioClonado.preferencias.tema); 
// Saída: 'claro'

console.log('Data mantida como Date:', usuarioClonado.criadoEm instanceof Date); 
// Saída: true

Pontos-chave

  • Preservação de Tipos Especiais: Ao contrário de JSON.stringify(), o structuredClone() suporta e mantém tipos nativos como Date, Set, Map, RegExp, ArrayBuffer e TypedArray.
  • Suporte a Referências Circulares: O método lida nativamente com objetos que contêm referências a si mesmos, evitando erros de stack overflow sem exigir algoritmos customizados.
  • Limitações de Clonagem: Funções, símbolos (Symbol), elementos do DOM e objetos com métodos de protótipo não podem ser clonados e lançarão um erro DataCloneError.
  • Desempenho e Recursos: É executado diretamente pela engine do JavaScript de forma assíncrona/síncrona otimizada, oferecendo ganho de performance em comparação com parsers manuais de JSON ou iterações recursivas em código do usuário.

Thales de Oliveira Gomes

Thales de Oliveira Gomes é gestor de Tecnologia da Informação, especialista em infraestrutura de redes, computação em nuvem e operações de TI hospitalar, com mais de 18 anos de experiência na área. Graduado em Gestão de TI e pós-graduado em Engenharia de Redes e Telecomunicações, Cloud Computing, Redes de Computadores e Gestão Hospitalar, construiu uma trajetória sólida liderando projetos de alta complexidade, como a implementação e migração para nuvem de sistemas ERP de grande porte. Sua atuação no setor o levou a ser indicado ao prêmio IT Leaders Brasil na categoria Rising Leaders. Além da carreira corporativa e da paixão por tecnologia, Thales é autor independente com mais de 70 obras publicadas sobre redes, segurança da informação, Linux e física, além de criador de conteúdo no blog Vetor Tech e na plataforma CiberDicas. No universo das artes e do entretenimento, atua como produtor de música eletrônica sob o projeto Yknex, cria ilustrações digitais e compartilha walkthroughs de games no YouTube.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *