• 追加された行はこの色です。
  • 削除された行はこの色です。
* モジュールパターン [#p895323a]
* オブジェクトリテラルを使ったクラス作成 - 応用 [#x989e164]

モジュールパターンとはシングルトンパターンの一種で、オブジェクトのプロパティをパブリック・プライベートにする。Douglas Crockford氏によって提唱されたらしい。
** クラスの作成 [#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;
 };

 var module = function() {
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);
 
     var v1 = null;
     var v2 = 10;
    that.sayAge = function () {
        alert("My age is " + this.age);
    }
 
     function init(v) {
         v1 = v;
     };
     function func() {
         return _func();
     };
     function _func() {
         return v1 * v2;
     };
     function value() {
         return v1;
     }
     
     return {
         init  : init,
        func  : func,
         value : value
     };
 
 }();
    return that;
 }

- 無名関数によって変数や関数を局所化する。 
- オブジェクトリテラルを返すモジュールパターンによりグローバルからアクセス出来るようにする。
-  オブジェクトリテラルから内部の変数や関数を参照するようにする事で、内部の変数や関数の書式を一貫したものにする。
thatを(空のオブジェクトリテラルではなく)Animal()で初期化して、Animalの継承を実現している。

** 参考 [#ra57d02f]
- JavaScript "Best Practices"
- http://www.slideshare.net/cheilmann/javascript-best-practices-1041724
*** 子クラスのインスタンスを作成・利用 [#z5d89b00]
 var d = Dog("Jiro", 5);
 d.sayName();
 d.sayAge()

- sayName()は親クラスで定義、sayAge()は子クラスで定義されている。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS