I went to mean MDN JavaScript . I read the definition and do not quite understand what is happening:
JavaScript® (often simply JS) is an easy, interpretable, object-oriented language with first-class functions.
Clear. We read further, the same paragraph:
JavaScript is a prototype-oriented , multi-paradigm language with dynamic typing, which supports object-oriented, imperative and declarative (for example, functional programming) programming styles.
Now it became clear less.
If we talk about the old EcmaScript specification, then everything is clear there, the word class reserved, but not yet used. Language is really prototype-oriented. Class as a concept does not exist, but there is an object. Inheritance of objects is done through prototypes.
But here comes EcmaScript 2015, where the concept of a class already exists , classes can be inherited, etc. etc.
Turn to Wikipedia:
Prototype programming is an object-oriented programming style ...
That is, it turns out some nonsense. Why does MDN write that JS is a prototype-oriented language, and later it also indicates that it is an object-oriented language, when you could simply indicate that it is a prototype-oriented language? After all, the prototype-oriented approach is a unit of object-oriented, as far as I understood, following the logic of Wikipedia.
I ask to help to understand, after all style of the code which I write directly should depend on it. Although on the other hand, this is a multi-paradigm language. I'm confused, in short.