> Object.prototype.toString is not as useful as Ruby, Python
I don't know that returning that info would be good or secure in JS
> Oh, DOM UTF-16 string broken by UCS-2 JavaScript function. I understand it is not easy to fix, Ruby fixed in 1.9, Python in 3.0, new languages (Rust, Elixir) come with UTF-8. Microsoft Windows has code pages, UCS-2, UTF-16.
The best and most compatible answer is moving JS to UTF-32. JS engines already save space by encoding strings internally as latin1 instead of UCS when possible (even around 90% of text from Chinese sites is still latin1). IMO they should have made backtick strings UTF-32, but that doesn't exactly transpile well.
> No, every Ruby object contains variables and has a link to a class which defines instance methods, we call it singleton_class
I'll let you decide which implementation is easier to work through, but I have a definite opinion that Ruby's system is more complex (and Python layers their OOP on top of what is basically a hidden prototypal system).
> I've red through ES5 to be sure there are no hidden traps left.
You'll love newer ES versions then. The upcoming private fields are an even bigger mess.
JS needs a "use stricter" mode which really slices away the bad parts. Even better, just add a `version="es20xx"` requirement to use newer features and have browsers ignore what they don't know, so you could even compile and link to multiple compilation levels of the same script and have the browser choose.
In truth, JS would be in the best place of any top-20 language if Eich had just been allowed to make a scheme variant as he had planned.
Of course prototype based language is simpler than class based. Ruby system is more complex. It provides more tools — Class, Module, class and instance methods, variables (as depicted on the picture). You've asked eigenclass (singleton_class these days), that's Class:a -> A, very simple concept.
And yet Ruby inheritance is much easier, it is all around and it just works. No one does this in JavaScript, too complex. There were many attempts of building OOP people could understand on top of JavaScript in 200x. No one does this for Ruby.
I don't know that returning that info would be good or secure in JS
> Oh, DOM UTF-16 string broken by UCS-2 JavaScript function. I understand it is not easy to fix, Ruby fixed in 1.9, Python in 3.0, new languages (Rust, Elixir) come with UTF-8. Microsoft Windows has code pages, UCS-2, UTF-16.
The best and most compatible answer is moving JS to UTF-32. JS engines already save space by encoding strings internally as latin1 instead of UCS when possible (even around 90% of text from Chinese sites is still latin1). IMO they should have made backtick strings UTF-32, but that doesn't exactly transpile well.
> No, every Ruby object contains variables and has a link to a class which defines instance methods, we call it singleton_class
https://mccraigmccraig.files.wordpress.com/2008/10/ruby-eige...
https://i.stack.imgur.com/FPPdI.png
or adding all the things with a few instances, .constructor, etc
https://i.stack.imgur.com/HvzDP.png
I'll let you decide which implementation is easier to work through, but I have a definite opinion that Ruby's system is more complex (and Python layers their OOP on top of what is basically a hidden prototypal system).
> I've red through ES5 to be sure there are no hidden traps left.
You'll love newer ES versions then. The upcoming private fields are an even bigger mess.
JS needs a "use stricter" mode which really slices away the bad parts. Even better, just add a `version="es20xx"` requirement to use newer features and have browsers ignore what they don't know, so you could even compile and link to multiple compilation levels of the same script and have the browser choose.
In truth, JS would be in the best place of any top-20 language if Eich had just been allowed to make a scheme variant as he had planned.