The few things that aren't objects like the primitives (number, string, boolean...) will temporarily be wrapped as objects when needed.
There are no classes in JavaScript because JavaScript is a prototype object oriented language. This means that objects in JavaScript directly inherit from other objects. Hence we don't need classes.
Prototype is like the evolution for objects, it chains one object to another, sharing the information stored which is also dynamically linked to the parent
Constructor functions are the most used way in JavaScript to construct prototype chains.
so.. here is the thing... functions are objects and objects can contain objects... and those things could be in the protoype
So, we have Function Constructors, which have been the common way to build new objects until ES6. sometimes Function Constructors can be confusing to understand (especially if you want to model inheritance). To alleviate this, ES6 introduces the class syntax.
ES6 classes just create the same prototype chains we know and love from previous versions of JavaScript, but with a much saner syntax than Function Constructors.
I am a diver... ;)