#4 ES6 - деструктуризация

poster
В этом уроке мы разберемся, что такое деструктуризация и как ее можно применять, чтобы сделать код лаконичнее.
Понравилось? Поделитесь с друзьями!
Понравилось?
Поделитесь с друзьями!
Комментарии
Текст видео

В этом уроке мы разберем с вами такое понятие в es6 как деструктуризация.

Обычно когда нам нужно работать с значением обьекта в ес5 мы пишем там

var obj = {
  width: 100
};
console.log(obj.width);

В ес6 мы можем сделать деструктуризацию обьекта и получить сразу width. Для этого вместо переменно obj мы можем в фигурных скобках указать ключ обьекта, который мы хотим получить

var { width } = {
  width: 100
}

В этой записи мы создаем локальную переменную width в которую сразу присваивается эта строка.

Точно так же можно писать получая несколько переменных из обьекта одновременно.

var { width, height } = {
  width: 100,
  height: 200
};

Очень часто у нас есть функция, которая возвращает обьект и тогда мы можем также применять деструктуризацию

function generateObj () {
  return {
    width: 100,
    height: 200
  };
}

var { width, height } = generateObj();

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

function generateObj () {
  return {
    title: 'Menu',
    width: 100,
    height: 200
  };
}

var { width: containerWidth, height: containerHeight } = generateObj();
console.log(containerWidth);
console.log(containerHeight);

Очень часто приходится работать с вложеными обьектами

var obj = {
  id: '123',
  attributes: {
    width: 100,
    height: 100
  }
}

Для того чтобы получить значение вложеных обьектов можно использовать вложенную деструктуризацию

var { id, attributes: { width, height } } = obj;
console.log(id)
console.log(width)
console.log(height)

В этом случае id мы получаем как обычно, а width и height мы получаем делая опять деструктуризацию уже из attributes.

Также у нас есть возможность указывать при деструктуризации значения по умолчанию. Например мы можем сказать, что если в атрибутах width и height не заданы, то брать значения 50 на 50.

var { id, attributes: { width = 50, height = 50 } } = obj;

Мы просто через равно указали параметры по умолчанию. Если мы перезагрузим страницу, то ничего не изменится, так как у нас width и height указаны, а если мы их удалим, то получим значения 50 и 50.

Точно так же как мы применяли деструктризацию с обьектами ее можно делать и с массивами, но используется это реже.

var [ red, yellow ] = ['red', 'yellow'];
console.log(red);
console.log(yellow);

Точно так же можно указывать значения по умолчанию

var [ red = 'super red', yellow = 'super yellow' ] = ['red', 'yellow'];

Иногда бывает так, что нам нужны только определенные елементы из массива. В деструктуризации мы можем просто не указывать их

var [first, , , , fifth] = ['red', 'yellow', 'green', 'blue', 'orange'];

Здесь мы указали что нам нужно записать в переменную first первый елемент массива и в fifth пятый, а все остальные елементы массива нас не интересуют.

Точно так же деструктуризацию очень удобно применять в функциях

function getSizes ({ width, height }) {
  console.log(width)
  console.log(height)
}

getSizes({
  width: 100,
  height: 200
})

В этом случае мы получаем на вход всегда обьект и читаем из него ключи width и height присваивая в локальные переменные.

Сюда мы также можем добавить значения по умолчанию

function getSizes ({ width = 50, height = 60 }) {
  console.log(width)
  console.log(height)
}

Итак в этом уроке мы разобрались, что такое деструктуризация и как ее можно применять, чтобы сделать код лаконичнее.

Если у вас возникли какие-то вопросы или комментарии, пишите их прямо под этим видео.

Только зарегистрированные пользователи могут оставлять комментарии.  Войдите, пожалуйста.
Атхам Султон
1год назад назад
В этой записи мы создаем локальную переменную width в которую сразу присваивается строка Alex. какая строка?
monsterlessons
1год назад назад
Спасибо исправил. Присваивается значение 100.
k2530257
2 лет назад
Спасибо, очень полезно.