スプレッド演算子は浅いコピーを実行します
スプレッド演算子を使用してオブジェクトをコピーすると、新しいオブジェクトが作成され、元のオブジェクトのプロパティと値が新しいオブジェクトにコピーされます。元のオブジェクトにプロパティ値として他のオブジェクトが含まれている場合、新しいオブジェクトと元のオブジェクトはそれらのプロパティを共有し、両方とも同じオブジェクトを指します。
例えば
const obj1 = {
name: 'maomao',
info: {
age: 18
}
}
const obj2 = {
...obj1}
obj2.name = 'ayetongzhi'
obj2.info.age = 22
console.log('obj1', obj1)
obj1 {
name: 'maomao',
info: {
age: 22 }
}
console.log('obj2', obj2)
obj2 {
name: 'ayetongzhi',
info: {
age: 22 }
}
上の例では、オブジェクト obj1 を定義し、スプレッド演算子を使用して obj1 を変数 obj2 にコピーします。
次に、obj2 は、info 参照オブジェクトの name 属性と age 属性を変更します。
結果を出力した後、obj1 の info 参照オブジェクトの値も変更されていることがわかりました。
したがって、スプレッド演算子が浅いコピーを実行していることがわかります。