オブジェクトリテラル構文は JavaScript Object Notation (JSON) とは異なります。両者は似ていますが、違いがあります。 JSON は、"property": value 構文を使用するプロパティ定義のみを許可します。プロパティ名は二重引用符で囲まなければなりません。そして、その定義を略記にすることはできません。計算されたプロパティ名も許されません。 JSON オブジェクトプロパティの値で取りうるのは、文字列、数値、true、false、null、配列、他の JSON オブジェクトのみです。これはJSONがメソッドや、プレーンでないオブジェクト、例えば Date や RegExp を表現できないことを意味しています。 JSON では、 "__proto__" は通常のプロパティキーです。オブジェクトリテラルでは、オブジェクトのプロトタイプを設定します。 JSON
![オブジェクト初期化子 - JavaScript | MDN](https://cdn-ak-scissors.b.st-hatena.com/image/square/aa767575b4232d312d2c5de428f0bf0955805e26/height=288;version=1;width=512/https%3A%2F%2Fdeveloper.mozilla.org%2Fmdn-social-share.cd6c4a5a.png)