JavaScriptのオブジェクトとは:ちゃんと理解してますか
白石俊平(あゆた)
2008-01-21 15:00:00
JavaScriptをより深く知りたい人のための当連載もいよいよ三回目。今回はJavaScriptにおけるオブジェクトとは何か?というお話をしたいと思います。
前回は、JavaScriptにおける関数はオブジェクトであり、関数定義は「オブジェクトの作成」に他ならない、と言うお話でした。今回は、「では、JavaScriptにおけるオブジェクトとは何か?」というお話をしたいと思います。
JavaScriptオブジェクトとは「ハッシュテーブルのようなもの」
オブジェクト指向言語における「オブジェクト」とは、「データと振る舞いをひとまとまりにしたもの」として説明されることが多いです。例えばJavaのオブジェクトは、フィールド(=データ)とメソッド(=振る舞い)から構成されます。
しかし、JavaScriptにおける「オブジェクト」の概念は、ある意味それより遥かに単純です。なぜなら、誤解を恐れずいうならば、JavaScriptオブジェクトとは、単なる「ハッシュテーブル」のようなものとして捉えることができるからです(※1)。
ハッシュテーブルとは、「キーと値の組み合わせ」でデータを管理する構造のことですね。JavaScriptオブジェクトにおいては、「キー」は変数名や関数名と言った文字列(※2)、「値」は変数や関数となります。実際のコードで確認してみましょう。
※1 実際は、ハッシュテーブルよりも遥かに複雑ですが、JavaScriptが値の解決に利用する「プロトタイプチェイン」などの仕組みは、連載のもう少し後でお話しします。
※2 キーは数値の場合もあります(配列ライクなオブジェクトのインデックスなど)。
- コメント(5件)
#1
anonymous
2009-04-22 15:30:53
「-v1 => "変数1" -f2 => 無名関数」の-f2は-f1の間違いかと思われます。
#2
tomita
2009-04-23 15:41:45
builder編集部 冨田です。いつもご愛読頂き、ありがとうございます。
ご指摘の件ですが、確かに誤りでしたので下記の通り修正させて頂きました。
読者の皆さま並びに関係各位には深くお詫び申し上げます。
ご指摘の件ですが、確かに誤りでしたので下記の通り修正させて頂きました。
読者の皆さま並びに関係各位には深くお詫び申し上げます。
「-v1 => "変数1" -f2 => 無名関数」 ↓ 「-v1 => "変数1" -f1 => 無名関数 」 また、「-」は箇条書きのために付与した記号であることから、記事では ・v1 => "変数1" ・f1 => 無名関数 と修正させて頂きました。
#3
anonymous
2009-10-09 11:18:17
上記修正されておりません。
f2のままになっておりますので、修正お願いいたします。
f2のままになっておりますので、修正お願いいたします。
#4
anonymous
2012-02-06 14:33:45
「片付けを持つ言語」は「型付けを持つ言語」の間違いかと思われます。
#5
builder編集部
2012-02-06 17:51:45
Anonymous様
builder編集部です。ご指摘、ありがとうございました。
本記事の2ページ目を修正いたしました。
この度はご迷惑をおかけしまして、誠に申し訳ございませんでした。
今後もご愛読頂ければ幸いです。よろしくお願いいたします。
builder編集部です。ご指摘、ありがとうございました。
本記事の2ページ目を修正いたしました。
この度はご迷惑をおかけしまして、誠に申し訳ございませんでした。
今後もご愛読頂ければ幸いです。よろしくお願いいたします。
- ホワイトペーパー

