Iterables return an iterator object. This object knows how to access items from a collection 1 at a time, while keeping track of its current position within the sequence.
let user = { name: "sam", totalReplies: 17, isBlocked: false }; user[Symbol.iterator] = function(){ let properties = Object.keys(this); let count = 0; let isDone = false; let next = () => { if(count >= properties.length){ isDone = true; } let value = this[properties[count++]]; return {done: isDone, value} ; }; return { next }; };