I mean getters that are generators. All this is ES6+ I believe. Like this maybe.
class a {
get *count() {
let i = 10;
while(--i) yield i;
}
}
let b = new a;
for(const i of b.count)
console.log(i);
That doesn't work through, I am placing the asterisk wrong (that is if this is possible at all)
unexpected identifier *
The get syntax binds an object property to a function that will be called when that property is looked up.
Getters and setters allow you to define Object Accessors (Computed Properties).
Generators are function executions that can be suspended and resumed at a later point. Generators are useful when carrying out concepts such as 'lazy execution'. This basically means that by suspending execution and resuming at will, we are able to pull values only when we need to.
There is no shorthand notation for this. You can however return a generator from a getter property without any difference:
function* countdown(i) {
while(--i) yield i;
}
class a {
get count() {
return countdown(10);
}
}
I would recommend to avoid this though. Getters that return distinct stateful objects on consecutive calls can be quite confusing.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With