I find JavaScript itself to be a pretty usable language (maybe somewhere between Python (easier) and Java (harder) or C++ (harder still)), but the browser DOM environment is a pain to deal with.
After understanding Self, I didn't find JavaScript's prototype system hard to understand.
I've got a book here on my shelf which is a summary book of all sorts of approaches in prototype OO programming:
https://www.goodreads.com/book/show/180324.Prototype_Based_P...
From that, and my experience with both Self and with other prototype OO languages (like LambdaMOO & offshoots), I just find the JS implementation to be ... uncomfortable.
Plus from the earliest days people just seemed to be embarassed by the prototype thing. They shouldn't have been.
Taivalsaari’s Kevo is a marvelous language.
Yes I remember liking the idea with that one. And thinking that its "clone families" were a bit like implicit structural typing in a way. And that perhaps there was a way one could do a kind of static typing & type inference with something based around similar ideas. (e.g. this method takes as an arg anything which structurally matches xxxx, which we could deduce via clone families, etc.)