クロージャを使ったクラスベースオブジェクト指向JavaScript

クロージャとは、関数と変数環境をあわせたもので、Javaのようなメソッドとインスタンス変数を持ったクラスの動きをしてくれる。
つまり、変数の状態を記憶できるObjectのようなもので、また変数をprivateにできる。

クロージャは次の2点で実現できる。

  • 関数の中の関数を返す
  • 返した関数を変数に代入して、それを実行

例:

もしクロージャが一つだけあればよければ、doIfExistClassを即時関数(function(){...})()にして、関数定義と関数呼び出しをまとめて行い、いきなりdoIfExist変数に代入してもよい。
クラス名に相当する関数名が省けて少し便利。

以上が最小構成のクロージャだが、メソッドが一つしかないため、複数のメソッドを持つクラスを作れない。
これを解決するためには、クロージャが返す関数内関数の代わりに関数名がkeyで関数がvalueな連想配列で返してあげればよい。

-JavaScript