Показать сообщение отдельно
  #3 (permalink)  
Старый 28.10.2016, 22:36
Аспирант
Отправить личное сообщение для fuckingquest Посмотреть профиль Найти все сообщения от fuckingquest
 
Регистрация: 28.10.2016
Сообщений: 70

Хуй ее знает, при чем тут прототипы, и в чем суть вопроса, но генераторы работают примерно так
arr = [1, 2, 3, 4, 5]
MyObject = {}
Object.defineProperty(MyObject, "double", {get: function(){return this.number + this.number}})
MyObjectConstructor = function(number){this.number = number}
MyObjectConstructor.prototype = MyObject
gen = function*(){
   for(var i = 0; i < arr.length; i++){
     yield new MyObjectConstructor(arr[i])
   }
}()

current = gen.next()
while(!current.done) { console.log(current.value.number, current.value.double); current = gen.next() }
delete current

и массив не является им альтернативой, так как это нечто типа ленивых списков. Каждая итерация замерзает до следующего вызова.
Что касается let, то тут, похоже, его не надо втыкать. Он на каждой итерации создает новое окружение, а тут, все работает и без него прекрасно, кроме лишнего оверхеда от него толку тут нет
Ответить с цитированием