JavaScriptでのクラスを実装コードリーディング

JavaScriptは動的型付け言語なので、クラスの実装はなかなか厄介です。

どうしてもクラスが実装したくなったときには、いつも見るclass定義の形に近い形でやるのがいいと思います。

参考にしたサイトのコードにコメントを追加して、意味を追って行きたいと思います。

// 実質的なクラス名
var hoge = (function() {

  var FOOFOO = 777; // クラス内定数

  // プロパティを定義するところ
  // このオブジェクトが返されるのでクラス名と同じにすること
  var hoge = function(arg) { //ここで書いた引数が静的型付け言語のinitメソッドの引数
    this.x = 5;
    this.y = 10;
    this.z = arg;
  };

  // クラスのメソッドを入れる箱を作る
  // 生成されたインスタンスは共通にこの箱を呼び出せる
  var p = hoge.prototype;

// おそらく、Javaにおけるstaticな使い方ができるので、共通のオブジェクトを格納したい場合は変数pの中に入れる。


  // hoge.f1();で関数を呼び出せる
  p.f1 = function() {
    return true;
  };

  p.f2 = function() {
    return false;
  };


  // 最後に実体を返す
  return hoge;
})();


// インスタンスの作成
var instance = new hoge(1);

【javascript】やさしいクラスの作り方|Qiita