Pour le côté objet, c'est pas super possible. Le JS propose un système objet relativement sommaire qui peut t'aider à organiser ton code en entités, mais ça sera pas aussi poussé que des langages définitivement objets. Certains frameworks peuvent t'aider à ce niveau-là, notamment ReactJS, qui vise à compartimenter ton code en composants réutilisables et polymorphiques. La philosophie des webcomponents pourrait aussi t'intéresser.
Pour le principe de l'autoload, c'est un brin délicat également, mais on y arrive. L'utilisation de solutions comme requireJS, webpack ou browserify peut par contre t'encourager à séparer ton code en modules, et te permettre de les appeler, bien que manuellement, beaucoup plus facilement et de façon transparente, à la manière des "import" de langages comme Python, Ruby ou Haskell.
Enfin, une alternative intéressante aux frameworks utilitaires type jQuery est lodash/underscore. C'est une bibliothèque utilitaire qui "connaît sa place" (c'est pas avec lodash que tu te retrouveras avec du code spaghetti de sélecteurs jQuery), et propose des solutions efficientes à des problèmes classiques, tout en "compensant" le minimalisme du javascript en permettant d'utiliser des simulacres de structures de données plus poussées que celles fournies de base.