Я как-то увидел, что можно реализовать хранение состояний того или иного субъекта с помощью битовой карты. То были состояния кнопки. Каждое состояние закодировано определённой степенью двойки. После записи "стартовых" состояний с ними можно проводить операции с помощью побитовых операторов javascript.
Component.State = {
DISABLED: 1,
FOCUSED: 2,
HOVERED: 4,
ACTIVE: 8,
HAS_ICON: 16
}
Допустим, состояние HOVERED и FOCUSED будет записано как
Component.State[HOVERED | FOCUSED]
Можете рассказать, как это работает? Чтобы было понимание не только на конкретном примере, а чтобы я мог сам писать и обрабатывать такие состояния побитовыми операциями. Мне это показалось очень интересным и довольно-таки применимым, так как код становится логичнее и удобочитаемее. Где-то глубоко в голове я понимаю, что тут что-то происходит с двоичным представлением числа, но это лишь догадки, да и с двоичными числами я знаком только по школьной программе...
Источники для ознакомления приветсвуются. Только не слишком сложные, потому что "академического" образования я не имею и мне, возможно, будет тяжело читать совсем научную литературу.