2009-03-16
■ [biwascheme][javascript] 'new'をメタプログラミングするにはeval使うしかないのだろうか
BiwaSchemeで、
(js-new "Date" 2008 0 0)
とすると JavaScriptの
new Date(2008, 0, 0);
相当になるという機能があるんですが、実装が嫌な感じで、 "new Date(2008,0,0)" という文字列を作ってからそれをevalするようになっている。 (だから、 (js-new "Date" year) とか、schemeの変数をnewに渡したりするのがめんどい)
普通の関数なら func.apply(args) とかやればいいわけだけど、newはなんとかならないんですかね?
ここにある方法で,ユーザ定義のクラスならいけますが,やはりDateのような組み込みクラスでは失敗しました.<br>http://nanto.asablo.jp/blog/2005/10/24/118564