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.foo
で上書きすることはできますが、o
は複雑さに制限されません。
実行可能なオプションはありますか?
node-proxyの存在を覚えているので、node.jsを拡張してプロキシを実装することができます(C++で実装されています)。これはキャッチオール機能を提供し、おそらく他のSS JSに移植することができます。
動的である必要がありますか?それ以外の場合は、 "o"を変更して "o.foo"のすべてのプロパティをマージするだけではどうですか? – Pointy
@Pointy私は構成を避けたいが、集約と転送を使いたい。私がアグリゲーションと転送を使用している場合は、代わりにコンポジションを使用する必要があり、それは匂いだと言えます。 – Raynos