- 追加された行はこの色です。
- 削除された行はこの色です。
* モジュールの作り方 [#p895323a]
* オブジェクトリテラルを使ったクラス作成 - 応用 [#x989e164]
var module = function() {
var current = null;
var config = {
'num1' : 1,
'num2' : 2
};
function init() {
};
function show() {
current = 1;
};
function hide() {
show();
};
return {
init : init,
show : show,
current : current
};
}();
** クラスの作成 [#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)を返す。
** 参考 [#ra57d02f]
- JavaScript "Best Practices"
- http://www.slideshare.net/cheilmann/javascript-best-practices-1041724
** インスタンスを作成・メソッドを利用 [#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()は子クラスで定義されている。