Итераторы

Credit: https://learn.javascript.ru/iterator

by Artem

JavaScript

'use strict';

const user = {
	name: 'Artem',
  surname: 'Nakhodkin'
};

user[Symbol.iterator] = function() {
	let values = [];
  let keys = Object.keys(this);
  for (let key of keys) {
  	values.push(this[key]);
  }
	return {
  	next() {
    	if (values.length > 0) {
      	return {
        	value: values.shift(),
          done: false
        };
      } else {
      	return {
        	done: true
        }
      }
    }
  }
};

//for (let value of user) {
//	alert(value);
//}

function showArgs(...args) {
	args.forEach(arg => alert(arg));
}

//showArgs(...user);

const iterator = user[Symbol.iterator]();
while(true) {
  let result = iterator.next();
  if (result.done) break;
  alert(result.value); 
}