Having cut their teeth on a language tends to leave the programmer with a worldview where any language which doesn't have the same features which are present in their beloved language is an inferior language.
I believe Paul Graham refers to this as 'The Blub Paradox'[0].
Most of the complaints surrounding javascript stem from the fact that it was initially designed to be a lightweight scripting language.
At the time that javascript was created I think that very few people envisioned the web growing into what it has become. Javascript wasn't created with 100,000 line programs in mind.
Therefore it is currently missing some abstractions which people creating and maintaining programs in the large have come to rely on such as classes, interfaces and modules.
Also javascript has a very simple standard library which leads to people feeling that they need to reinvent the wheel in most cases.
Finally Javascript has prototypal inheritance as opposed to the more traditional class based inheritance which so many programmers are used to.
Of course many of the things mentioned above have already been solved or are currently being solved.
The ECMAScript standards body is in the process of adding classes and modules. Libraries such as underscore.js are fleshing out the standard library. And tools such as Coffeescript are providing a more class based inheritance model (if that is your thing).