| 今回は、前回の内容を少し発展させて、 newに渡すコンストラクタを、いろいろいじってみます。 今までのとは一線を画してややこしいので注意してください。 |
| コンストラクタがオブジェクトをreturnすると… |
function Main1(){
var a=new function(){return {value:0}};
alert(a.value);
alert(a.constructor);
} |
| 普通のコンストラクタは以下のものと同じことなのでは? (つまり最後にreturn thisをしているということです) |
function Main2(){
var a=new function(){this.value=0;return this};
alert(a.value);
alert(a.constructor);
} |
| コンストラクタがオブジェクトをnewを使って返す(これはMain1と同じ)もの、 コンストラクタがコンストラクタを返すもの |
function Main3(){
var a=function(){this.value=0};
var b=new function(){return new a};
alert(b.value);
alert(b.constructor);
var c=new function(){return a};
alert(c);
alert((new c).value);
} |
| あるコンストラクタfを返す関数gについて、 new gとg()の値は同じになるのではないでしょうか。 (ただし、fという同じ関数をgという同じ関数が参照したときのみ正しく評価できます。 その根拠については、参考を参考に熟考をお願いします) |
function Main4(){
var f=function(x){this.value=x};
var g=function(){return f};
var a=new g;
var b=g();
alert(a==b);
alert(function(){}==function(){});//参考
} |
| いつか隠しページについての実験をやりたい。 |
| top 戻る |