Creación de un objeto iterable en JavaScript

Vamos a crear un verdadero objeto iterable que pueda ser recorrido mediante el ciclo for-of. Para ello, el objeto necesita agregar la función correspondiente en Symbol.iterator.

Implementémoslo. Supongamos que tenemos el siguiente objeto:

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

Agreguemos la función a Symbol.iterator:

javascriptobj[Symbol.iterator] = function() {

}

Convirtamos esta función en un generador:

javascriptobj[Symbol.iterator] = function *() {

}

Dentro de nuestra función this hará referencia al propio objeto:

javascriptobj[Symbol.iterator] = function *() {
  console.log(this); // el propio objeto
}

Ejecutemos la iteración del objeto en el iterador:

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

Listo, el objeto se puede recorrer con el ciclo for-of:

javascriptfor (let elem of obj) {
  console.log(elem); // 1, 2, 3
}
Задание 1

Crea un objeto que se pueda recorrer con el ciclo for-of. Que en el elemento del ciclo llegue un objeto, en cuya clave key esté la clave del objeto que se itera, y en la clave val - el valor. Ejemplo:

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

for (let elem of obj) {
  console.log(elem);
}

Mostrará:

javascript{key: 'a', val: 1}
{key: 'b', val: 2}
{key: 'c', val: 3}