Object.assign () modifica i suoi parametri? [duplicare]
Non sono sicuro del motivo per cui il valore "data" viene modificato nel test.jsfile.
// data.js export default { a: 1, b: 2, c: 3, };
// test.js
import data from "./data"; console.log({ data }); // {a:1,b:2,c:4} const modif1 = Object.assign(data, { c: 4 }); console.log({ modif1 }); // {a:1,b:2,c:4}
Non sono riuscito a riprodurlo in codepen, ma ecco un repo: https://github.com/bmichalowski/shards percorso del file: ./src/stories/PropsBug
Non penso che una reazione o un libro di fiabe abbia qualcosa a che fare con questo, quindi non lo taggo.
Modificare:
In questo jsfiddle, il comportamento è come previsto. https://jsfiddle.net/83xsdomb/Tuttavia, il mio codice ha un ordine diverso. Perché la datevisualizzazione viene modificata quando viene modificata teoricamente dopo la visualizzazione?
Risposte
Secondo i documenti :
Il metodo Object.assign () copia tutte le proprietà enumerabili da uno o più oggetti di origine a un oggetto di destinazione. Restituisce l'oggetto di destinazione.
Le proprietà nell'oggetto di destinazione vengono sovrascritte dalle proprietà nelle origini se hanno la stessa chiave. Le proprietà delle sorgenti successive sovrascrivono quelle precedenti.
In sostanza, modifica il primo oggetto che gli è passato e restituisce lo stesso oggetto.
Puoi evitarlo passando {}come primo parametro.
const data = { a: 1, b: 2, c: 3}
const modif1 = Object.assign({}, data, { c: 4 });
console.log(data);
console.log(modif1);