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-proxy的存在,它允许您扩展node.js以实现代理(在 C++ 中实现)。这提供了包罗万象的功能,并且可能可以移植到其他 SS JS。

4

1 回答 1

0

JavaScript 没有“捕获所有”处理程序,尽管它正在考虑用于未来的版本。

setUpForwarding您可以通过遍历所有函数成员foo然后创建o具有相同名称的转发函数来解决此特定问题。不过,这仅适用于功能。

于 2011-01-29T14:18:05.903 回答