Я понял что в JS не надо тащить парадигму ООП и начал жить.
Если у вас есть багаж стандартных знаний о ООП вроде С++, Java или PHP, то надо его забыть, и учиться всему заново. Будет легче.
Еще раз поясню. В JS есть ООП, но между классическим ООП и прототипным ООП огромная разница в синтаксисе (но по сути похоже). Поэтому если вы будете искать какой-нибудь "статик" или "абстракт" в JS, то набьете кучу шишек. А если будете искать абстракцию или наследование, то найдете все необходимое.