Хотел создать генератор, но незнаю как правильно с точки зрения прототипного подхода.
Я решил сделать карточную игру у меня есть сущность Карта, Наборы(по одному у каждого играка). Подкидной набор и генератор карт в случайном порядке.
Я решил написать классы через прототипы. Генератор вижу как. // Класс Card уже обьевлен function* generateSequence() { // Получить массив options c индексами от 1 до 36 из файла for (let i =1; i <= 36; i++) { yield new Card(options[i]); } } Насколько оправдано использование let. Не лучше ли сложить обьекты карт в массив? Игру пишу для себя и друзей, но хотелось бы чтобы работало. Правильно ли я написал генератор. |
Хуй ее знает, при чем тут прототипы, и в чем суть вопроса, но генераторы работают примерно так
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, то тут, похоже, его не надо втыкать. Он на каждой итерации создает новое окружение, а тут, все работает и без него прекрасно, кроме лишнего оверхеда от него толку тут нет |
Меня больше всего интересует, причем тут вообще прототипный подход? Может я недопонял чего-то?
|
Часовой пояс GMT +3, время: 21:31. |