javascript中的动态代理?

javascript中的动态代理?,javascript,Javascript,我可以通过这样做在javascript中代理单个函数(只是从内存中记下来,请耐心等待) 作为一名java程序员,我认为这是一个动态代理。每次我写这样的代码时,我想一定有人制作了一个非常智能的库,它可以执行常见的代理操作,这比我在匆忙中所能做的至少好10%。我希望有一些东西,比如正确地截取任何给定对象的所有方法,这可能不是很简单。还有不同类型的建议。因此,虽然我不期望有scriptaculous那么大的东西,但它肯定不止6行代码 那么这些图书馆在哪里呢 事实上,您已经能够做到这一点,我认为这意味着

我可以通过这样做在javascript中代理单个函数(只是从内存中记下来,请耐心等待)

作为一名java程序员,我认为这是一个动态代理。每次我写这样的代码时,我想一定有人制作了一个非常智能的库,它可以执行常见的代理操作,这比我在匆忙中所能做的至少好10%。我希望有一些东西,比如正确地截取任何给定对象的所有方法,这可能不是很简单。还有不同类型的建议。因此,虽然我不期望有scriptaculous那么大的东西,但它肯定不止6行代码


那么这些图书馆在哪里呢

事实上,您已经能够做到这一点,我认为这意味着有一个库可以以纯JavaScript的形式实现它,即您上面的示例。正如您所知,设计模式可以应用于JavaScript,因此我想我向您提供的建议是由Google和Yahoo GUI开发人员提供的:

第14章:代理模式。请参考您的解决方案。您可能仍然更喜欢您的方法,或者您可以从他们的方法中找到提示

干杯

安德鲁

试试看


看看这个插件,它似乎只使用jQuery作为名称空间,所以即使你不想使用jQuery,你也可以尝试这个插件。

我认为你不能截取所有函数

您最好迭代对象的所有元素并查找任何函数:

for elem in someObject {
    if typeof(elem) == "function" {
        // replace the function
    }
}

问题是,如果您稍后添加函数,它不会通过代理路由。

Dojo Toolkit对AOP构造有很多支持,如:

了解您想要实现的目标会有帮助。我自己还没有见过,但我有NIH的倾向……我还是不明白:您想要一个库来为您节省6行代码吗?在Javascript中,库的成本很高(而在C#/Java中,您似乎拥有它们只是因为您可以这样做)。我也不能说我曾经需要用Javascript编写建议。@cletus我可能编写的Javascript应用程序比大多数人都大,所以即使只是一个标准化的模式也有价值。javascript经常让我惊讶,因为它有一些非常聪明的解决方案。重新编辑的问题。谢谢,我把书放在我的亚马逊购物篮里了。我知道如何做这些事情的大部分,但我厌倦了不断地重新发明这个轮子。很好的建议!刚买了这本电子书。
for elem in someObject {
    if typeof(elem) == "function" {
        // replace the function
    }
}