Conversation

Replying to and
They added Map as a proper key-value data structure so it's a good idea to ban using objects as map data structure now, just like banning any usage of `var` (using only let/const) with "use strict" to prevent implicit usage of that nonsense broken form of scoping with hoisting.
1
I don't think it's reasonable to blame Map for objects implementing equality as reference equality. It would be worse if it deviated from the standard definition of equality in the language. Arrays and objects are what need to be fixed, not Map using `===` (it doesn't use `==`).
1
1
They don't need to change Map to fix these problems though. It would be able to work with a new form of arrays and/or operator overloading. Reference equality also wouldn't be the end of the world if it was only a default which could be overridden, like Python3 objects.
1
Replying to
But if arrays and objects are effectively off the cards as keys, then it's basically a very, very marginally improved object dictionary. It's yet another thing added that screws over beginners and leaves a nice fat landmine in the codebase for skilled developers.
1
Replying to
I don't see that. It improves a lot of subtle things that go wrong when using objects as dictionaries. By the way, objects in Python 3 have reference equality as the default implementation too. The difference is that you can override the implementation of equality and hashing.
2
Show replies
Replying to
How do you think equality should be defined for arbitrary objects by default, if not reference equality? Nice implementations in other languages either allow overriding the implementation and either have no default or default to reference equality.
1
Show replies