0
var o = new SomethingComplex;

var o.foo = new SomeThing; // we have o.foo.doSomething

setUpForwarding(o, o.foo);

o.doSomething(); // calls o.doSomething if exist, else o.foo.doSomething

目立たないメソッド転送を設定するにはどうすればよいでしょうか? ES5 の手法を使用してもまったく問題ありません。これはIE6では不可能だと想像できます

o.call("doSomething");完全に控えめにしたいような方法を探しているわけではありません。

.__proto__また、プロトタイプ チェーンを投入できるように編集することo.fooは不正行為であり、許可されていません。自然なプロトタイプ チェーンでの上書きoは許可されますが、複雑さの制限はありません。o.fooo

実行可能なオプションは残っていますか?

node.jsを拡張してプロキシを実装できるnode-proxyの存在を覚えています(C ++で実装)。これは包括的な機能を提供し、おそらく他の SS JS に移植できます。

4

1 に答える 1

0

JavaScript には「キャッチオール」ハンドラはありませんが、将来のバージョンで検討中です。

setUpForwardingのすべての関数メンバーを反復処理してから、同じ名前でfoo転送関数を作成することで、この特定の問題を解決できます。oただし、これは関数に対してのみ機能します。

于 2011-01-29T14:18:05.903 に答える