function print(str) {
document.write("<strong style='color:green;'>"+str+"</strong>");
}
function println(str){
if(str){
document.write("<strong style='color:green;'>"+str+"</strong><br/>");
}
else{
document.write("<br/>");
}
}
//iterator
class A{
*[Symbol.iterator](){// "* " => could use yield
for(var i=0;i<10;i++){
yield i;
}
}
}
for(v of new A()){//travels all value ,not key
println(v);
}
class B{
[Symbol.iterator](){// "* " => could use yield
var index = 0;
return {next:function(){
return {done:index>10,value:index++};
}};
}
}
for(v of new B()){//travels all value ,not key
println(v);
}
//yield
class C{
*g(){//have to have "*"
for(var j=0;j<10;j++){//have to have "var"
yield j;
}
}
}
var c = new C();
println("c.g() = "+c.g());
println("c.g().next() = "+c.g().next());
println("c.g().next().value = "+c.g().next().value);//始终是0,看来有问题!
println("c.g().next().value = "+c.g().next().value);
println("c.g().next().value = "+c.g().next().value);
println("c.g().next().value = "+c.g().next().value);
println("c.g().next().value = "+c.g().next()["value"]);
println([...c.g()]);
//simplify function definition
obj={
say(){
println("I am simple!");
}
};
obj.say();
//get and set
class D{
set Age(value){
this.age = value;
}
get Age(){
return this.age;
}
constructor(){
this.age = 18;
}
}
var d = new D();
println("d.Age = "+d.Age);
d.Age = 10000;
println("d.Age = "+d.Age);