JavaScript lacks a real library/module system, namespaces and OOP facilities. I usually spend more time maintaining a JavaScript program than a program written in Java/C# with equivalent size.
That being said, my skills in JavaScript are limited.
I especially like the fact, that "importing" module in node returns imported module, instead of putting it into namespace like it does in Java. It's much better design.
You can do OOP in any langage and there is nothing wrong with dojo. But from my limited experience, maintaining large programs written in JavaScript is a tedious job (each program reinvent it's own OOP semantics)