Is JavaScript a (True) OOP Language?

I know, this topic has been discussed so many times, too many times. However, it is always a current topic. Every time a Java or C# or any other OOP language developer gets in touch with JavaScript, he complains about it. He says that working with it is a mess, that it has no types, it is not well-structured, it has several oddities, its object support is trivial, and it is definitively not an OOP language.
Some of these complaints may be acceptable, but some others are prejudices, such as the claim that JavaScript has no types and that it is not an OOP language. Regarding the latter point, before affirming it, you should ask yourself: what does make a programming language an Object-Oriented Programming language?