Разрушение многоуровневых объектов в ES6 - PullRequest
1 голос
/ 01 июля 2019

Если у меня есть объект ниже,

const obj = {
   user:
   {
    type:{
      type1:"developer",
      type2:"architect"
    },
    role:"admin"
   },
   salary:50000
}

const {user: {type}} = obj;
console.log(`type:  ${type}`);
console.log(user);

и если я напишу что-то вроде ниже,

const {user: {type}} = obj;
console.log(type);  //prints [object Object] which is right

но если я попытаюсь напечатать

console.log(user); // ReferenceError: user is not defined 

Может кто-нибудь объяснить мне следующий синтаксис деструктуризации ES6?

const {user: {type}} = obj;

1 Ответ

2 голосов
/ 02 июля 2019

В настоящее время вы берете подобъект user и извлекаете из него type. Это проще, если вы думаете об этом как о функции - когда вы деструктурируете Из свойств, исходный объект нигде не сохраняется и более недоступен. То же самое и здесь - user больше не доступен.

Что бы вы могли сделать, если бы хотели получить к нему доступ, это извлечь type из user, а также извлечь user и сохранить его.

const obj = {
  user: {
    type: {
      type1: "developer",
      type2: "architect"
    },
    role: "admin"
  },
  salary: 50000
}

const { user: { type }, user } = obj;
console.log(`type:  ${type}`);
console.log(user);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...