Почему здесь вылетает ошибка?
Почему я не могу св-ва объекта dinner присвоить таким образом св-вам объекта obj?
let dinner = {
drink: 'cola',
food: 'cake'
};
let obj = {};
{obj.one, obj.two} = dinner;
Ответы (1 шт):
Проблем в данном случае несколько:
Нет сопоставления свойств в шаблоне с источником.
{obj.one, obj.two}данный шаблон не указывает каким именно способом сопоставлять данные с переменными. Для решения достаточно указать конкретные поля:{ drink: obj.one, food: obj.two }Неоднозначность использования фигурных скобок, в данном случае они расцениваются не как литерал объекта, либо шаблон для сопоставления, а как блок кода. Для исправления достаточно взять все выражение в скобки.
({...} = source)
Если исправить недочеты, код начинает работать:
let dinner = {
drink: 'cola',
food: 'cake'
};
let obj = {};
({
drink: obj.one,
food: obj.two
} = dinner);
console.log(obj)
Для избегания неоднозначности можно воспользоваться деструктуризацией массива
let dinner = {
drink: 'cola',
food: 'cake'
};
let obj = {};
[obj.one, obj.two] = [dinner.drink, dinner.food];
console.log(obj);