new付け忘れ防止クラス

あー、たまに見るなーと思ったコード。

function Aaa() {
  if (!(this instanceof Aaa)) {
    return new Aaa(arguments);
  }
}

この関数を呼ぶとき、newを付けていようが付けていまいが同じ動作になる。
でもJavaScript Ninjaの極意にもあったけどそれってうれしいのかなーと思った。

function Aaa() {
  if (!(this instanceof Aaa)) {
    throw new Error('forgot new?');
  }
}

とかの方がいいのかなーと。new付け忘れてますよーって言われた方がうれしいんじゃないかなーと思った。まる。