#javascript #ecmascript-6 #copy #deep-copy
#javascript #ecmascript-6 #Копировать #глубокое копирование
Вопрос:
Как я могу исправить ниже, чтобы t:false
оно сохранялось b
?
https://jsfiddle.net/5gvxb7wL/
const a = { t: true, deep: { t: true} }
const b = { t: false, ...a }
console.log('a', a)
console.log('b', b)
консоли
"a", {
deep: {
t: true
},
t: true
}
"b", {
deep: {
t: true
},
t: true
}
Ответ №1:
Распространение a
перед перечислением t: false
; более позднее свойство, указанное / интерпретируемое, будет иметь приоритет:
const a = { t: true, deep: { t: true} }
const b = { ...a, t: false }
console.log(b)
Ответ №2:
Когда вы используете оператор распространения { t: false, … a } подобным образом, вы сначала изменяете значение t, а затем перезаписываете его копией всех значений из объекта a, поэтому для правильного использования оператора распространения вам нужно сначала распространить копию объекта, который вы копируете, изатем вы изменяете отдельные значения, которые вам нужны {…a, t: false } .