Глубокое и неглубокое слияние в javascript

В чем разница между глубоким и мелким слиянием объектов в javascript? Насколько я понимаю, глубокое слияние рекурсивно копирует все перечислимые свойства исходного объекта в целевой объект. Но что делает мелкое слияние?

Ответ 1

В неглубоком слиянии свойства первого объекта перезаписываются с теми же значениями свойств второго объекта.

Давайте посмотрим на пример. Настроить:

var obj1 = {
  foo: {
    prop1: 42,
  },
};

var obj2 = {
  foo: {
    prop2: 21,
  },
  bar: {
    prop3: 10,
  },
};

Мелкий:

var result = {
  foo: {          // 'foo' got overwritten with the value of 'obj2'
    prop2: 21,
  },
  bar: {
    prop3: 10,
  },
};

Deep:

var result = {
  foo: {
    prop1: 42,
    prop2: 21,    // 'obj2.foo' got merged into 'obj1.foo'.
  },
  bar: {
    prop3: 10,
  },
};