JavaScript でクラス定義するときのメモ。

クラス定義の基本

JavaScript のクラス定義は function() を使って行う。

var MyClass = function(name) {
  /* ここにプロパティの初期化コードを書く */
  this.name = name;
}
 
MyClass.prototype.myMethod = function() {
  /* prototype.メソッド名 の形でメソッドを定義する */
  alert(this.name);
}
 
var obj = new MyClass("hamasyou");
obj.myMethod();    // => "hamasyou"

ネームスペースをつけてクラスを宣言する

いくつかやり方がありますが、一番素直なやり方で。

var com = {};
if (typeof(com.hamasyou) == "undefined") com.hamasyou = {};
(function() {
  var ns = com.hamasyou;
  ns.MyClass = function(name) {
    /* ここにプロパティの初期化コードを書く */
    this.name = name;
  };
  ns.MyClass.prototype.myMethod = function() {
    /* ここにメソッドの中身を書く */
    alert(this.name);
  };
})();
 
var obj = new com.hamasyou.MyClass("hamasyou");
obj.myMethod();        // => "hamasyou"

ネームスペースあれこれ

javascript - ふつうのnamespace - 404 Blog Not Found

[JavaScript]undefine - Enjoy*Study

クラス定義もうひとつ

プロトタイプを上書きして、コンストラクタをプロトタイプに実装する方法。

JavaScript OOP におけるクラス定義方法 - IT戦記

var com = {};
if (typeof(com.hamasyou) == "undefined") com.hamasyou = {};
(function() {
  var ns = com.hamasyou;
  ns.MyClass = function() {
    this.initialize.apply(this, arguments);
  };
  ns.MyClass.prototype = {
    initialize: function(name) {
      this.name = name;
    },
    myMethod: function() {
      /* ここにメソッドの中身を書く */
      alert(this.name);
    }
  };
})();
 
var obj = new com.hamasyou.MyClass("hamasyou");
obj.myMethod();        // => "hamasyou"