For reference JS isn't actually object oriented, it is a prototype language. You can fake it being OOP within that style, but it isn't really OOP, even if you can code in it that way.
If we want to be pedantic, prototypal inheritance is a kind of OOP[1]. What you're talking about is referred to as "classical OOP" (OOP using classes).
[1]: https://en.wikipedia.org/wiki/Prototype-based_programming
Just like Lua, hence their similarities.
JS ate Lua's cake, not on pure technical merits (the two languages are very similar) but because of their respective environments.