P.S. Только фрэймворки не советуйте, пожалуйста .)
Без фреймворка тут ни как. Если ни хотите использовать ни чей фреймворк, то придется хотя бы созать небольшой свой собственный. Потому что ваша задача решается именно так. В яваскрипте очень не удобно организовывать код если присать на чистом яваскрипте. Но фреймворки решают это проблему. Все некрасивую логику вы выносите в фремворк, подключаете его, и уже свой код пишите красивым кодом.
Для примера, так решили эту задачу Microsoft. В приложениях которые пришутся на яваскрипте используются котовые методы для создания классов, и для их вызова.
Так что или найдите что то хорошое, куда было вложено много ума и сил как например Ангуляр или пишите что то свое.
Но найтивно на голом яваскрите писать красивый ООП код НЕВОЗМОЖНО.