ES6では、マップとセットでオブジェクトをキーとして使用できます。しかし、ES6の仕様はこれらのデータ構造の基本的な実装を規定していないので、O(1)または少なくともsublinearの検索を保証するために現代のJSエンジンがキーをどのように格納しているのだろうか?ES6マップとセット:オブジェクトキーはどのように効率的に索引付けされますか?
Javaのような言語では、プログラマは明示的に(良好な)hashCodeメソッドを提供することができます。このメソッドは、キースペース内でキーを均等にハッシュして、パフォーマンスを保証します。しかし、JSにはこのような機能がないため、MapsおよびSetsの実装で何らかのハッシュを使用していると見なすのはまだ公正ですか?
すべての情報をお待ちしております!
もちろん、ハッシュを使用します。独自の等価を指定することはできないため、独自のハッシュ関数を実装する必要はありません。彼らは単にオブジェクトのアイデンティティに使用します。 – Bergi
[es6 Map and Set Complexity、v8 implementation](https://stackoverflow.com/q/33611509/1048572)の複製がありますか?それがあなたの質問に答えるなら、私は終わります。 – Bergi
ああ、私は彼らが平等をチェックするためにオブジェクトアイデンティティーを使用することを理解するので、私は理解します。しかし、彼らはどのようにハッシュ位置を取得するのですか?いくつかの種類のmemoryAddress%keySpace? – luanped