# Создание итерируемого объекта в JavaScript

Давайте создадим настоящий итерируемый объект, который можно будет перебрать через цикл `for-of`. Для этого объекту нужно добавить соответствующую функцию в `Symbol.iterator`.

Давайте реализуем. Пусть у нас есть следующий объект:

`let obj = { a: 1, b: 2, c: 3, };`

Добавим функцию в `Symbol.iterator`:

`obj[Symbol.iterator] = function() { }`

Превратим эту функцию в генератор:

`obj[Symbol.iterator] = function *() { }`

Внутри нашей функции `this` будет ссылаться на сам объект:

`obj[Symbol.iterator] = function *() { console.log(this); // сам объект }`

Запустим в итераторе перебор объекта:

`obj[Symbol.iterator] = function *() { for (let key in this) { yield obj[key]; } }`

Все, объект можно перебирать циклом `for-of`:

`for (let elem of obj) { console.log(elem); // 1, 2, 3 }`

Сделайте объект, который можно перебрать циклом `for-of`. Пусть в элемент цикла попадает объект, в ключе `key` которого будет ключ перебираемого объекта, а в ключе `val` - значение. Пример:

`let obj = {a: 1, b: 2, c: 3}; for (let elem of obj) { console.log(elem); }`

Выведет:

`{key: 'a', val: 1} {key: 'b', val: 2} {key: 'c', val: 3}`
←→
↑
en ru