newの間違い
よく間違えるんだけど、下記のコードで、変数hogeには、関数オブジェクトが格納されるので、hoge.nameは関数の名前になる。
var hoge = function func(){ this.name = 'ken'; }; alert(hoge.name); // "func"と表示される。
で、よく間違えて、下記のコードを書いてしまうんだけど、この場合、変数hogeに関数オブジェクトは格納されない。まず、関数オブジェクトfuncが定義され、funcに対してnewしているので、関数オブジェクトfuncはコンストラクタとして呼び出され、nameプロパティを持つ新たなオブジェクトが作成される。
var hoge = new function func(){ this.name = 'ken'; }; alert(hoge.name); // "ken"と表示される。