こちらを参考にjavascriptで実験してみました。
Function.prototype.funcObj = function() { return { valueOf : this } }; var random = function() { var res = Math.random(); alert('randomL:'+res); return res; } function add(i, j) { alert('add'); if(j>0){ return i+j; } return j; } alert(add(random(), 1)); alert(add(random(), 0)); alert(add(random.funcObj(), 1)); alert(add(random.funcObj(), 0));普通にrandom()を引数に渡すとadd()の第二引数に関係なく必ずrandom()が実行されますが、
random().funcObj()を引数に渡すと先にadd()が呼ばれて第二引数によってはrandom()が実行されないのを確認。
こんな感じでしょうか。
しかし、
Function.prototype.funcObj = function() { return { valueOf : this } };
これがいまいち理解出来ていなくて、連想配列としてvalueOfを誰かが自動的に呼んで、その際に関数を実行させないで、自分のオブジェクトを返すって事でいいのでしょうか。
0 件のコメント:
コメントを投稿