javascript - Är detta ett bra sätt att klona ett objekt i ES6?
Att googla efter "javascript clone object" ger några riktigt konstiga resultat, några av dem är hopplöst föråldrade och några är bara för komplexa, är det inte lika enkelt som bara:
let clone = {...original};
Finns det något fel på detta?
Svar #1
Detta är bra för grundläggande kloning. Objektspredningen är en standarddel av ECMAScript 2018.
För djup kloning kommer du att behöva en annan lösning.
const clone={...original} för att göra en ytlig kopia
const newobj={...original, prop: newOne} för att på ett oföränderligt sätt lägga till en annan egenskap till originalet och spara som ett nytt objekt.
Svar #2
REDIGERA: När detta svar postades var {...obj}-syntaxen inte tillgänglig i de flesta webbläsare. Numera bör det vara okej att använda den (om du inte behöver stödja IE 11).
Använd Object.assign.
https://developer.mozilla.org/sv/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
var obj = { a: 1 };
var copy = Object.assign({}, obj);
console.log(copy); // { a: 1 }
Men detta kommer inte att göra en djup kopia. Det finns inget inbyggt sätt att göra djupkopiering än så länge.
REDIGERA: Som @Mike 'Pomax' Kamermans nämnde i kommentarerna, kan du göra en djup kopia av enkla objekt (dvs. inga prototyper, funktioner eller cirkulära referenser) med JSON.parse(JSON.stringify(input))
