Page 147 - JavaScript
P. 147

class BeverageForPizza {
             constructor(preferenceRank) {
                 this.beverageList = beverageList;
                 this.pointer = 0;
             }
             next() {
                 return this.beverageList[this.pointer++];
             }

         var withPepperoni = new BeverageForPizza(["Cola", "Water", "Beer"]);
         withPepperoni.next(); //Cola
         withPepperoni.next(); //Water
         withPepperoni.next(); //Beer


        In ECMAScript 2015 iterators are a built-in as a method that returns done and value. done is true
        when the iterator is at the end of the collection


         function preferredBeverage(beverage){
             if( beverage == "Beer" ){
                 return true;
             } else {
                 return false;
             }
         }
         var withPepperoni = new BeverageForPizza(["Cola", "Water", "Beer", "Orange Juice"]);
         for( var bevToOrder of withPepperoni ){
             if( preferredBeverage( bevToOrder ) {
                 bevToOrder.done; //false, because "Beer" isn't the final collection item
                 return bevToOrder; //"Beer"
             }
         }



        As a Generator


         class FibonacciIterator {
             constructor() {
                 this.previous = 1;
                 this.beforePrevious = 1;
             }
             next() {
                 var current = this.previous + this.beforePrevious;
                 this.beforePrevious = this.previous;
                 this.previous = current;
                 return current;
             }
         }

         var fib = new FibonacciIterator();
         fib.next(); //2
         fib.next(); //3
         fib.next(); //5


        In ECMAScript 2015


         function* FibonacciGenerator() {  //asterisk informs javascript of generator
             var previous = 1;



        https://riptutorial.com/                                                                             104
   142   143   144   145   146   147   148   149   150   151   152