Object.assign () mengubah parameternya? [duplikat]

Oct 26 2020

Saya tidak yakin mengapa nilai 'data' diubah dalam 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}

Saya tidak dapat mereproduksinya dalam codepen, tapi inilah repo: https://github.com/bmichalowski/shards jalur ke file: ./src/stories/PropsBug

Saya tidak berpikir reaksi atau buku cerita ada hubungannya dengan itu, jadi saya tidak menandainya.

Edit:

Dalam jsfiddle ini, perilakunya seperti yang diharapkan. https://jsfiddle.net/83xsdomb/Namun, kode saya memiliki urutan yang berbeda. Mengapa datetampilan diubah ketika diubah secara teoritis setelah ditampilkan?

Jawaban

1 AyushGupta Oct 26 2020 at 01:32

Sesuai dokumen :

Metode Object.assign () menyalin semua properti enumerable sendiri dari satu atau lebih objek sumber ke objek target. Ini mengembalikan objek target.

Properti di objek target ditimpa oleh properti di sumber jika memiliki kunci yang sama. Properti sumber selanjutnya menimpa yang sebelumnya.

Pada dasarnya, ini memodifikasi objek pertama yang diteruskan ke sana, dan mengembalikan objek yang sama.

Anda dapat menghindari ini dengan meneruskan {}sebagai parameter pertama.

const data = { a: 1, b: 2, c: 3}
const modif1 = Object.assign({}, data, { c: 4 }); 
console.log(data);
console.log(modif1);