コンストラクタの戻り値
コンストラクタがオブジェクト以外を返す場合,this を返すようだ.
function Foo () { return new Bar(); } function Bar() { } function Baz() { return false; } var foo = new Foo(); alert("foo = " + foo.constructor); var baz = new Baz(); alert("baz = " + baz.constructor);
自分のイメージだと,new はこんなことをしている.
var obj = new Cons(args); // ↓ 変換 var obj = {} // 空のオブジェクトを作成 (function () { // 変数ret のスコープ var ret = Cons.apply(obj, args); // コンストラクタを実行 if (typeof ret == "object") { // 戻り値がオブジェクトであれば obj = ret; // それを返す } else { obj.constructor = Cons; // オブジェクトのコンストラクタの設定 } })();
とあいえ,本には,obj.prototype.constructor に設定される.とあるな.
jsUnit とかで調べるような環境を作るか?
kozawa さんとこ見たら,nanto_vi さんとこへのリンクががが.
http://nanto.asablo.jp/blog/2005/10/24/118564
こらいい.やっぱ.nanto_vi さんに聞くが吉.