* オブジェクトリテラルを使ったクラス作成 - 詳細 [#x989e164]
* オブジェクトリテラルを使ったクラス作成 - 応用 [#x989e164]
** クラスの作成 [#p55e2c0a]
var Animal = function (name, age) {
var that = {};
that.name = name;
that.age = age;
that.sayName = function () {
alert("My name is " + this.name);
}
return that;
};
Animal()はコンストラクタであり、初期化処理後、オブジェクトリテラル(that)を返す。
** インスタンスを作成・メソッドを利用 [#v3e37dc3]
var a = Animal("Taro", 10);
a.sayName();
*** オブジェクトリテラルを使ったクラスのメリット [#f2092a89]
クラス内の変数・関数を隠蔽出来る。この例の場合、thatにageをセットしなければ、ageはプライベート変数になる。
** 継承 [#k134b5ab]
*** 子クラスの作成 [#k186c407]
var Dog = function (name, age) {
var that = Animal(name, age);
that.sayAge = function () {
alert("My age is " + this.age);
}
return that;
}
thatを(空のオブジェクトリテラルではなく)Animal()で初期化して、Animalの継承を実現している。
*** 子クラスのインスタンスを作成・利用 [#z5d89b00]
var d = Dog("Jiro", 5);
d.sayName();
d.sayAge()
- sayName()は親クラスで定義、sayAge()は子クラスで定義されている。