objectとmapの比較
keyが実行時まで不明の場合にはmap, keyがprimitiveならmap、メンバーを処理する関数が必要ならobject
set
配列、ただし値はユニーク
object.create()
コンストラクタ関数を用意しなくてよい→面倒くさいのでオブジェクトはコンストラクタ関数を用意する、newで作成に統一したほうが良い。
prototype
prototype プロパティを使用すると、定義済みのオブジェクト型に対してプロパティを追加する
JavaScript は、クラスではなく、プロトタイプに基づいたオブジェクトベースの言語
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Details_of_the_Object_Model
クラスベース:クラスとインスタンス、クラスはすべてを定義する、インスタンスはクラスへの紐づけが強制される。密結合。一つの意識を持った複数のクローン。
プロトタイプ:テンプレートとなるプロトタイプだけがある、オブジェクトはプロトタイプとは紐づいていない。プロパティはいくらでも追加できる。別の意識を持ったクローン。
promise
vueでのデータベース呼び出しにはよく使われているので、ここはのちほど復習したほうが良い。ようするに非同期処理をきれいにするための記述方法。従来のasyncとは何が違うのか?
イテレータオブジェクト
value, max_count, condition, done, nextをもつオブジェクト。nextを繰り返していくとconditionに従ってvalueが変化する。max_countに達するとdoneフラグが立つ。
ジェネレーター
イテレータは操作が面倒くさいのでもっと単純化している。next()はイテレータもしくはジェネレータの内部構造を変更するための手段。yieldは値を返すがその間ずっとオブジェクトの状態を保持してくれる。
メタプログラミング proxy/reflect
reflectはapplyの上位互換。