оператор spread вызывает [Symbol.iterator]() чтобы проитерироваться по итерабельному объекту. по умолчанию объекты в JavaScript не являются итерируемыми, те они не имеют [Symbol.iterator]() метода. но как же мы мержим объекты с помощью spread? как это работает?