ハッピーメモメモ

私的備忘録

【JavaScript】オブジェクト

 

関数とオブジェクトは、言語によってやりたいことは大体同じかもしれないけれど、基本的な仕様が異なる!

なんか同じものかな~と思うなかれ!

 

オブジェクトとは

JavaScriptの基本となるデータ型

・プリミティブ型ではない値

 ※プリミティブ型の値はオブジェクトではないが、不変オブジェクトのように振る舞う

・複合型のデータ型

・順序付けされていないプロパティの集合であり、プロパティは名前と値をもつ

・オブジェクト自身のプロパティを継承できる

 ほかのオブジェクトからプロパティを継承することもできる

 継承対象になるオブジェクトを「プロトタイプ」と呼ぶ

・可変

・値ではなく参照で操作する

 

理解が難しい理由

・オブジェクトはいろんなものを表しすぎている!

・1番トップにあり、みんなが継承しているのも「オブジェクト」だし、そのオブジェクトを継承しているのも「オブジェクト」

 例)基本になるもの「車」

   →車を継承している軽自動車も、トラックも「車」

 

関数について

Java、C#

・関数定義がない(第一級関数をサポートしていないため)

・いきなり関数みたいなものを書くことができない

・クラスの中でメソッドを定義している

JavaScriptみたいに関数定義をするためのものが、ラムダ?

 

第一級関数

第一級関数 - Wikipedia

 

JavaScript

・関数どこでもいきなり使える

 

{キー:バリュー}

こんなイメージかも?

・プロパティ {変数名:定数}

・メソッド  {変数名:関数}

 

りあクト!【1.言語・環境編】(p65)

JavaScript の『オブジェクト』には、暗黙の内に狭義のオブジェクトと広義のオブジェクトの2 つがある

 

狭義のオブジェクト

・キーとそれに対応する値を持ったプロパティの集まり

・一般的には『連想配列』と呼ばれる

・多くの場合JSON 形式で表現できる

 

広義のオブジェクト

・プリミティブ値以外のすべてのものを包括して指す

・すべてObject という標準組み込みオブジェクトを最終的な継承元に持ってる

 

他の言語におけるオブジェクト

・一般的なクラスベースのオブジェクト志向言語では、クラスインスタンスのことを『オブジェクト』という