JavaScript

ООП в Javascript на примере футбольного менеджера...

https://jsfiddle.net/scotchhammer/mfa0x1j4/2/
В принципе приемлемое решение или не кошерно и всё делается совсем не так?
По крайней мере хотя бы работает (ну, не считая недоделанной деактивации кнопок)
Как только карточек станет чуть больше двух, задолбаетесь прописывать условие для каждого) При клике на кнопку - на месте надо определить куда кликнули, в зависимости от этого решать что делать...

club = Spartak;
listToAppend = spartPlayers;
playerToBye();

Здесь создаются глобальные переменные, напрашивается вопрос, нафига) Если можно передавать параметры в функцию, а она их уже обработает...

buyPlayer( название_клуба, имя_игрока );

Она сама уже в зависимости от клуба - должна узнать, куда добавить игрока, и хватит ли у них денег. Соответственно, где-то вверху должны стоять объекты

let clubs = {
  milan: {
    money: 100500,
    players: [],
    playerContainer: document.querySelector...
  }
}

let players = {
  messi: {
    price: 100500,
  }
}

function createPlayerCard(name) {
...appendChild( playerCardHTML )
}

В процессе создания карточки можно к элементу добавить data-name= прописать имя игрока. При клике на кнопку - уже не будет проблемой достать имя из атрибута и использовать его в качестве ключа объекта... и достать оттуда всю остальную информацию. А какой клуб отмечен - можно менять onchange радиокнопок и хранить в какой-то переменной... чтобы при покупке не нужно было проверять.
Muhammadjon Sotvoldiyev
Muhammadjon Sotvoldiyev
62 360
Лучший ответ
Когда объект хранит только публичные свойства и не имеет методов, абсолютно нет смысла создавать для него объектный тип (достаточно простого объекта). Так что, второй вариант. И это кстати очень типичная ошибка проектирования, она нормальна - понимание, где создание типов уместно, постепенно приходит с практикой.

А когда логика завязана на объектах элементов, имеет смысл расширять DOM-типы. Очень простой пример этого, с кодом, можно увидеть тут (имхо, вопрос по сути тот же самый, и ответы соотв.): https://ru.stackoverflow.com/a/1042045/288409
Сергей ***
Сергей ***
61 432