# 03. Object Destructing

* Паттерн деструкции объекта заключен в фигурные скобки `{...}`
* Имена в объектном паттерне должны совпадать с именами ключей объекта.

Базовый синтаксис:

```javascript
const {key1, key2} = {key1:…, key2…}
```

Переприсваивание ключа в переменную с другим именем:

```javascript
const { width: w, height: h, title } = options;
```

Задание значений по умолчанию `=`:

```javascript
const { a = 1, b = 0, z: c = 3 } = { b: 2, z: undefined };
const [d = 0, e = 5, f = 6] = [4, , undefined];
return a === 1 && b === 2 && c === 3 && d === 4 && e === 5 && f === 6;
```

Можно и сочетать одновременно двоеточие и равенство:

```javascript
const { width: w = 100, height: h = 200, title } = options;
```

Ключи объекта при деструктуризации могут быть вычисленными:

```javascript
const FOO = "foo";
const { [FOO]: f } = { foo: 123 }; // f = 123
```

Что позволяет использовать деструктуризацию для выделения символов:

```javascript
// Create and destructure a property whose key is a symbol
const KEY = Symbol();
let obj = { [KEY]: "abc" };
let { [KEY]: x } = obj; // x = 'abc'
```
