javaScript

オリジナルのオブジェクト(ユーザー定義オブジェクト)を作ってみる

documentオブジェクト、dateオブジェクトなど予め用意されているオブジェクトを使ってきました。それとは別に、ユーザーがオリジナルのオブジェクトを定義して、使うこともできます。ユーザー定義オブジェクトの例で、名前と身長を、「name」「height」で管理するPersonオブジェクトを作ります。

サンプルコードの実行結果はこちら

コンストラクタ

オブジェクトを生成際に使用するコンストラクタは、関数の仲間です。なので、ユーザー定義の関数と同様にfunctionというワードを使って定義します。

関数とは異なり、計算結果の値を返すreturn文は要らないです。コンストラクタが戻す値は、そのオブジェクトのインスタンスにだからです。return文を書いてもエラーにはならないですが、コンストラクタとして使う場合は無視されます。

コンストラクタでプロパティを設定

コンストラクタの名前には、オブジェクト名を使います。サンプルコードで定義したPersonオブジェクトのコンストラクタ「Person」を見ると、このコンストラクタは名前と身長を引数として受け取っています。コンストラクタ内部では、それらの値をそれぞれname,heightプロパティに初期値として設定します。

左辺が「this.name」と書いています。thisは何度か出てきていますが、自分自身を表している特殊な値です。このPersonオブジェクトのインスタンスを表しています。コンストラクタ内部では、下記のように書くことで、そのインスタンスのプロパティを表します。

下記のように書くと、引数heightの値をインスタンスのheightプロパティに値を代入しています。

オブジェクトの生成

Dateオブジェクトなどと同様に、ユーザー定義オブジェクトの生成も、new演算子とコンストラクタを使います。サンプルコードのように、名前「一郎」、身長「170」のPersonオブジェクトのインスタンスを生成して、変数friends[0]に代入するには以下のようにします。

プロパティにアクセスする

インスタンスを生成すれば、用意されているプロパティにアクセスできます。通常のオブジェクトと同じように「変数名.プロパティ名」でアクセスできます。

なおプロパティは、プロパティ名をキーにした連想配列でも
アクセスできます。

という具合に書きます。

ちなみに変数の配列のプロパティ名を
プロパティ名をキーにしてアクセスして、
変えたい場合には、以下のように書きます。
 *friends[0]のnameプロパティの値を「五郎」に変える場合

配列でユーザー定義オブジェクトを管理する

サンプルコードではオブジェクトのインスタンスを配列に格納しています。そうすることで、インスタンスの数が増えたときに管理がしやすいです。サンプルコードでは下記のように格納しています。

Arrayコンストラクタを使い、要素数3の配列friendsを生成しています。

右辺でnew演算子とPersonコンストラクタで、Personオブジェクトのインスタンスを生成して、配列friendsの要素に格納してます。

-javaScript
-,