Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.10.2016, 08:34
Новичок на форуме
Отправить личное сообщение для Ivan777 Посмотреть профиль Найти все сообщения от Ivan777
 
Регистрация: 26.10.2016
Сообщений: 1

Хотел создать генератор, но незнаю как правильно с точки зрения прототипного подхода.
Я решил сделать карточную игру у меня есть сущность Карта, Наборы(по одному у каждого играка). Подкидной набор и генератор карт в случайном порядке.
Я решил написать классы через прототипы.
Генератор вижу как.

// Класс Card уже обьевлен
function* generateSequence() {
 // Получить массив options c индексами от 1 до 36 из файла
  for (let i =1; i <= 36; i++) {
    yield new Card(options[i]);
  }
}

Насколько оправдано использование let. Не лучше ли сложить обьекты карт в массив?
Игру пишу для себя и друзей, но хотелось бы чтобы работало.
Правильно ли я написал генератор.
Ответить с цитированием
  #2 (permalink)  
Старый 26.10.2016, 08:47
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Ivan777, если класс объявлен через class то это и есть через прототипы, class - новая конструкция для ES6+ (как и function*, let, yield и тд)

Последний раз редактировалось Rise, 26.10.2016 в 08:49.
Ответить с цитированием
  #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, то тут, похоже, его не надо втыкать. Он на каждой итерации создает новое окружение, а тут, все работает и без него прекрасно, кроме лишнего оверхеда от него толку тут нет
Ответить с цитированием
  #4 (permalink)  
Старый 29.10.2016, 00:23
Аспирант
Отправить личное сообщение для fuckingquest Посмотреть профиль Найти все сообщения от fuckingquest
 
Регистрация: 28.10.2016
Сообщений: 70

Меня больше всего интересует, причем тут вообще прототипный подход? Может я недопонял чего-то?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно заменить символ точки? sharomet Общие вопросы Javascript 1 06.08.2016 21:38
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как правильно создать ComboBox? vdiomidov ExtJS 2 23.07.2012 09:55
Как правильно создать форму, работающую с внутренним сценарием arkushy Общие вопросы Javascript 13 13.07.2011 14:18