I don't really know the definition of "class based" well enough to say whether Javascript is class based.
So some random observations instead:
- It can be used in ways that that class based inheritance can be used.
- It can be used in different ways too, since prototype inheritance is more expressive.
- There not being a distinction between classes and instances might mean it isn't called a class.
- Individual instances not having the exact layout of the 'class' (prototype) also happens in other dynamic languages (so not inherent to the prototype system).
- It has data containers with methods and inheritance, which in my book is enough to be object oriented.
- I can imagine some people would want to stick to using it in a class-like way, since the extra power can lead to hard-to-follow code.
If I had a time machine, I would not go back to change the 'class' keyword, rather I would adapt Javascript to match the 'class' keyword better. Perhaps by replacing it with an entirely different language.