今回は、前回の内容を少し発展させて、 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 戻る |