SOURCE

class Counter{
    constructor(limit){
        this.limit=limit;
    }

    [Symbol.iterator](){
        let count=1,
            limit=this.limit;
        return{
            next(){
                if(count<=limit){
                    return{done:false,value:count++};
                }else{
                    return{done:true};
                }
            }
        };
    }
}

let counter1=new Counter(5);
let it = counter1[Symbol.iterator];
let iter=counter1[Symbol.iterator]();
//let iter1=iter;
//console.log(it);
//console.log(iter===iter1);

let str="abcdefghi";
console.log(str[Symbol.iterator]);
console.log(str[Symbol.iterator]());
let iters=str[Symbol.iterator]();
let iters1=iters;

console.log("for of counter1");
for(let i of counter1){
    if(i>3){
        break;
    }
    console.log(i);
}

for(let i of counter1){
    if(i>3){
        break;
    }
    console.log(i);
}

console.log("for of iter,first:");
for(let i of iters){
    if(i>'d'){
        break;
    }
    console.log(i);
}
console.log("second, continue:")
for(let i of iters){
    if(i>'g'){
        break;
    }
    console.log(i);
}
console 命令行工具 X clear

                    
>
console