読者です 読者をやめる 読者になる 読者になる

ochalog

Ruby と MediaWiki が好きな電子・情報系の学生のブログ。

Mozilla Developer Network(MDN)で Map の記事を翻訳した

プログラミング JavaScript

Mozilla Developer Network(MDN)で Map の記事を(プロパティ、メソッドを除いて)翻訳した。

Map - JavaScript | MDN

おかしいところがあれば、上記ページで修正してくださるとありがたいです。

MDN では ECMAScript 6 関連の記事の日本語訳はまだ少ないので、日本語情報の充実に少しでも貢献できていたらいいなぁ。

Map の特徴

この Map は Ruby の Hash と同じ以下のような機能を持つのが特徴らしい。

  • 任意の値(オブジェクトもプリミティブ値も)をキーにできる。
    • Object のキーは文字列のみ。
  • イテレータ[キー, 値] の配列を使える。
    • for key in obj[key, obj[key]] より楽?
  • Map.prototype.has() でキーがあるかを確認できる。
    • Object で確実に判定できる方法はあったかな?
  • 含まれるキー・値対の数を示す Map.prototype.size プロパティを持つ。
    • Array にはあるけれど、一般の Object にはない(手動で管理する必要がある)。

オブジェクト → オブジェクトの関係を表すのが従来は面倒だったので、それだけでもかなりストレスが減るはず。その他にも便利な機能があるので、早く広く使えるようになるとうれしい。

あと

キーが実行時まで不明なとき、またすべてのキーが同型でかつすべての値が同型のときは、オブジェクトよりマップを使いましょう。

個々の要素に影響する論理があるときはオブジェクトを使いましょう。

ということらしい。自分は

  • 「キーが実行時まで不明なとき」というのは、Object だとキーが衝突したときに予想しないものが書き換えられる危険があるから?
  • 同型性の重視は実行時の効率を良くするため?
  • 最後の文は難しいけれど、噛み砕いて言えば「『写像』を表すのではない普通のオブジェクトを扱うときは Object を使いましょう」ということだろうか?

と訳しながら解釈したけれど、合っているのだろうか。