Private class properties, getters, iterators in one simple example
Ever needed to loop over a set of values continuously, i.e. return to the first value when the end is reached? You could use an array, increment the index and set it to 0 when the end is reached, or you could take the opportunity to learn some modern js features:
class Looper {
#i // iterator
#b // iterable e.g. array, Map, Set
#v // value
constructor(iterable) {
this.#b = iterable
this.reset()
}
get value() {
return this.#v.value
}
get next() {
this.#v = this.#i.next()
if (this.#v.done) {
this.reset()
}
return this.value
}
reset() {
this.#i = this.#b[Symbol.iterator]()
this.#v = this.#i.next()
return this
}
}
Example usage:
const loop = new Looper([1,2,3])
loop.value //1
loop.next //2
loop.next //3
loop.next //1
loop.next //2
loop.reset()
loop.value //1
loop.next //2
loop.reset().value //1
loop.next //2
loop.next //3
:)
Top comments (0)