クラスにはデータという値を設定することができます。
ここではプロパティに関しての説明を行います。
プロパティはクラスが持つデータのことです。
Javaでいうとメンバ変数に該当します。
JavaScriptは柔軟な言語なためプロパティの設定方法がいろいろあります。
クラスの構成の1つであるプロパティを設定してみます。
ここでは一般的に使用される方法をまず解説をします。
プロパティはコンストラクタ内にthisキーワードを使用して定義します。
// 人間クラスを定義
function Human(name){
// 名前プロパティ
this.name = name;
}
// インスタンスを生成
var hopsii = new Human("ほぷしぃ");
document.writeln(hopsii.name);
// オブジェクトを生成
var pcsp = { name:"PC特集技術" };
document.writeln(pcsp.name);
Humanコンストラクタに引数として渡し、プロパティを初期化します。
さて、インスタンスプロパティにアクセスですが、オブジェクトに格納されているデータと同じです。
コンストラクタにthisキーワードを使用して定義するプロパティは全てのクラスで持ちたいデータを定義しましょう。
クラスプロパティは、クラス自体が持つプロパティです。
// 人間クラスを定義
function Human(name){
// 名前プロパティ
this.name = name;
}
// クラスプロパティを設定
Human.age = 20;
// インスタンスを生成
var hopsii = new Human("ほぷしぃ");
document.writeln(hopsii.name); // ほぷしぃ
document.writeln(hopsii.age); // undefined
document.writeln(Human.age); // 20
クラスプロパティはあくまでクラスが持つのでインスタンスプロパティには反映されませんので注意しましょう
ここがプロパティにおけるとても重要な概念の1つになります。
// 人間クラスを定義
function Human(name){
// 名前プロパティ
this.name = name;
}
// プロトタイププロパティを設定
Human.prototype.age = 20;
// インスタンスを生成
var hopsii = new Human("ほぷしぃ");
document.writeln(hopsii.name); // ほぷしぃ
document.writeln(hopsii.age); // 20
var pcsp = new Human("PC特集技術");
document.writeln(pcsp.name); // PC特集技術
document.writeln(pcsp.age); // 20
プロトタイププロパティを使うと全てのインスタンスは反映されるがわかります。
クラスにおいて定数を使いたい場合にはこのプロトタイププロパティを使うといいでしょう。
プロトタイプはJavaScriptにおいて重要な働きを持つ機能なので別の機会で詳しく説明します。
JavaScriptにおいてプロパティが1点だけ気をつけるべきことがありますので説明をします。
それはインスタンス生成後にプロパティが追加できる機能です。
こういう機能が一般的なクラスと違ういわれている理由かもしれません。
プロトタイプの例を先ほど説明しましたが、もし使わなかったときどうなるのか見てみます。
// 人間クラスを定義
function Human(name){
// 名前プロパティ
this.name = name;
}
// インスタンスを生成
var hopsii = new Human("ほぷしぃ");
// インスタンス生成後にプロパティを追加する
hopsii.age = 20;
document.writeln(hopsii.name);
document.writeln(hopsii.age);
// インスタンスを生成
var pcsp = new Human("PC特集技術");
document.writeln(pcsp.name);
// このインスタンス用にプロパティを追加しないといけない
document.writeln(pcsp.age);
pcsp.age = 30;
document.writeln(pcsp.age);
ただし、この方法をとるとインスタンスごとにプロパティを設定しなくてはなりません。
プロトタイプとの明らかな違いがわかると思います。
| 日付 | 詳細 |
|---|---|
| 2011/09/06 | コンテンツ公開 |
Copyright (C) 2011 ほぷしぃ. All Rights Reserved.