私の歴史と今

振り返ると恥ずかしくなるのが私の歴史。だけどそのときは真面目に書いていた訳でね。そんな今の私を書いていく。

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"と表示される。