Conhecendo 또는 structuredClone
4437 단어 javascriptfrontendbraziliandevs
Mas antes de falar dele, vamos entender um pouco sobre 얕은 복사 e 깊은 복사.
Pra começar, vamos criar um objeto e colocar alguns valores:
const objetoOriginal = {
a: 'valor1',
b: 'valor2',
c: {
d: 'valor3',
}
};
Quando executamos esse código, o javascript vai armazenar esses valores em memória e vai criar uma referência a esse endereço de memória para que possamos alterar e acessar quando necessário.
Agora, se fizermos uma cópia simples (shallow copy), estaremos fazendo uma cópia dessa referenceência, e não do valor que está lá na memória.
Então quando fazemos isso:
const objetoNovo = objetoOriginal;
Por baixo dos panos o que vai acontecer é:
Isso acontece porque o shallow copy é, bem como o nome diz, apenas uma cópia superficial. Dessa forma, se alteramos algum valor no objetoNovo, essa alteração pode acabar refletindo no objetoOriginal e dependsendo da situação pode causar muitos problemas.
Já no deep copy a cópia é feita por completo, criando um novo endereço em memória para armazenar o novo objeto.
Dessa forma podemos alterar a cópia livremente, sem risco de causar algum efeito colateral indesejado.
Esse tipo de cópia costuma ser um pouco mais custosa, muitas vezes sendo feita manualmente ou utilizando alguma biblioteca externa, como o lodash .
Voltemos agora à nossa estrela de hoje: o structuredClone!
sintaxe do structuredClone é super simples. Basta passar qual a variável a ser copiada, e será retornado uma cópia completa do que foi passado. Mesmo se for um objeto complexo, com vários níveis, tudo será espelhado.
const objetoClone = structuredClone(objetoOriginal);
간단하게 아심! 🤩 Não precisamos nem importar nada.
Internamente, o structuredClone implementa um algoritmo de cópia recursiva, que também dá suporte a referências circulares.
Como paraâmetro, podemos passar quaaase qualquer tipo de variável. 복제할 수 있는 용맹한 경우에는 DataCloneError에 대한 오류가 있습니다.
Também temos um segundo paraâmetro opcional, que recebe uma lista e nos permite transferir valores. Fazendo com que passem a existir apenas na cópia e não mais no original.
Mas atenção: Não é qualquer que pode ser movido. Apenas objetos dos tipos chamados de Transferable podem ser passados nesse paraâmetro, entram nessa lista os Buffers, Streams, etc... Mas isso é assunto pra um outro artigo 😉
구조화된 클론과 극단적인 도구를 사용하여 작업할 수 있습니다! Prático de usar, reduz dependsências, além de já ter bastante suporte entre os navegadores , então pode usar sem medo!
Quer ver mais a fundo sobre o structuredClone?
지금 구매하세요nessa página da MDN , ou veja diretamente aespecificação !
이 음성은 structuredClone과 일치합니까? Faz copias de alguma forma diferente? 감사합니다! 😁
Reference
이 문제에 관하여(Conhecendo 또는 structuredClone), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dbiazioli/conhecendo-o-structuredclone-2k16텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)