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.