Деструктуризация объекта с оценкой короткого замыкания - PullRequest
2 голосов
/ 19 марта 2020

Можно ли добиться чего-то подобного?

const obj1 = { name: 'tom' }
const obj2 = { age: 20 }

let { name, age } = obj1 || obj2

Получение в результате -> name = 'tom' и age = 20

приведенный выше код не работает, так как он оценивает условие один раз, а не для каждого назначения переменной, что, конечно, имеет смысл. Он оценивается как name = 'tom', age = undefined

Есть ли способ заставить эту логику c работать?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 19 марта 2020

Вы можете объединить объекты и затем попытаться деструктурировать как:

const obj1 = { name: 'tom' }
const obj2 = { age: 20 }

let { name, age } = {...obj1, ...obj2}; 
console.log( name, age )
1 голос
/ 19 марта 2020

Вы можете сделать это с помощью

  let { name, age } = Object.assign({}, obj1, obj2)

Сначала создайте объект, который имеет все атрибуты obj1 и атрибуты obj2.

Обратите внимание, что атрибуты не копируются глубоко.

...