オブジェクト指向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()を使う理由は特にない。