Conversation

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
Map doesn't rule out introducing a way for objects to define equality and a hash function in the future like other languages. The initial implementation didn't need to be tied to other major new features. I think they're doing a great job with the terrible base they were given.
2
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
Replying to and
Containers provide custom equality implementations comparing all the members via their equality implementations. JavaScript has no support for this kind of thing and there's no better option available to use than `===`. It would be bad to hard-wire workarounds into Map and Set.
1
Replying to and
You're complaining about one feature being added before a separate feature which works well with it. They haven't done anything that blocks a proper implementation of custom equality and hashing implementations. That's what I was saying which you've misrepresented as a 'cop out'.
1
Replying to and
That's going to be a hard problem for them to solve. Adding Map and Set before solving it didn't make it any harder. The problem exists for every single object type in the language and every library already, for all the operators, including comparison and arithmetic operators.
2
Replying to
JavaScript libraries are fast adopters on new language features because they need to work in older browsers. How many libraries use the native generator support, which is an incredibly compelling feature?
1
Replying to and
Maps and Sets are incremental upgrade over objects providing an all around improvement over using the quirky objects with only string keys, lack of proper iteration and weird semantics as key-value data structures. They don't need to be massive new features to be a good idea.
1
Replying to and
Sure, they could have provided a substantially larger API and also introduced operator overloading and custom hash implementations, but cautiously adding features in an incremental way is probably a good thing for a language with so many past mistakes...