Operatore spread e iteratori in JavaScript

L'operatore spread scompone qualsiasi oggetto che possiede un iteratore. In questo caso verrà preso l'iteratore predefinito. Diamo un'occhiata con un esempio. Supponiamo di avere la seguente collezione Map:

javascriptlet map = new Map();
map.set('a', 1);
map.set('b', 2);
map.set('c', 3);

Per impostazione predefinita, la scomposizione risulterà in un array bidimensionale:

javascriptlet arr = [...map];
console.log(arr); // [['a', 1], ['b', 2], ['c', 3]]

Per ottenere un array di chiavi, scomponiamo l'iteratore corrispondente:

javascriptlet arr = [...map.keys()];
console.log(arr); // ['a', 'b', 'c']

Allo stesso modo procediamo per ottenere un array di valori:

javascriptlet arr = [...map.values()];
console.log(arr); // [1, 2, 3]
Задание 1

Scomponi con lo spread il seguente oggetto:

javascriptlet obj = {
  a: 1,
  b: 2,
  c: 3,
  [Symbol.iterator]: function *(){
    for (let key in this){
      yield this[key];
    }
  }
};