オブジェクト指向2 コンストラクタとリテラル
引数があるとき。
コンストラクタ(型)
何個も変数を作るとき、型、つまり、コンストラクタを使う。
function Calender(year, month) { this.theYear = year; this.theMonth = month; //関数の場合もあたかも変数のように同じように扱ってよい。 this.getCal = getcal; }
別に、型なんて必要なくて、一つで十分なときは
関数リテラルを使う。(無名関数ともいう。)
var calender = new function(year, month) { this.theYear = year; this.theMonth = month; //関数の場合もあたかも変数のように同じように扱ってよい。 this.getCal = getcal; // 関数を入れ子状態にしても問題なし。 //ただし、関数を呼び出すわけだから、速度は落ちる。 this.setCal = function() {...}; }
引数がないとき
何個も変数を作るとき、型、つまり、コンストラクタを使う。
引数がないときも同じ。
function calender() { this.init = init; this.getCal = getCal; this.CAL_ERR = 1; }
別に、型なんて必要なくて、一つで十分なときは
オブジェクトリテラルか、組み込みのコンストラクタを使う。
オブジェクトリテラル形式 var calender = new Object(); calender.theMonth = 12; calender.getCal = getCal;
組み込みコンストラクタ形式 var calender = { theMonth : 12, getCal : getCal, }
とするか。
正直、2番目の方が見やすいし、そのほかにも利点があるので、
オブジェクトリテラルが使えるのであれば、new Object()を使う理由は特にない。