Я создаю игру, в которой я храню ресурсы персонажа в виде объектов, которые содержат данные и информацию о стилях
class Resource {
constructor(_name, _min, _max, _color){
this.name = _name
this.className = "character-" + _name
this.max = _max
this.min = _min
this.current = _max
this.color = _color
}
}
}
Чтобы создать ресурс под названием "энергия", самым простым способом было бы добавить this.energy = CharacterResource("energy", 0, 100, 0xEEEEEE)
где-то в моем характере. Однако, так как я планирую часто использовать этот шаблон, мне было интересно, можно ли было бы автоматически установить свойство _name
Ресурса равным свойству персонажа, которому он назначен.
Iпопытался использовать Object.getOwnPropertyNames()
, но, как и ожидалось, возвращается значение до , когда свойство добавлено. Поскольку весь смысл этого состоит в том, чтобы упростить процесс создания ресурса, быстрый способ, которым я обнаружил, чтобы это произошло позже, заключался в следующем:
this.energy
this.constructResource()
this.health
this.constructResource()
this.mana
this.constructResource()
...etc
, где constructResource
- это метод класса, который использует Object.getOwnPropertyNames()
чтобы добавить последнее свойство и манипулировать им оттуда. Для удобства чтения (и эстетики, я должен признать) я переключил его на:
this.energy ; this.constructResource()
this.health ; this.constructResource()
this.mana ; this.constructResource()
...etc
Тем не менее, размещение двух несвязанных утверждений в одной строке ощущается как запах кода. Это хорошая практика?
Если это слишком субъективно, чтобы спрашивать, существует ли лучший и / или уже стандартизированный способ неявной передачи имени метода методу, когда вы присваиваете значение последнего последнему