[英]Dynamic proxies in javascript?
我可以通过做这样的事情代理javascript中的单个函数(只是从内存中记下来,所以请耐心等待)
function addAroundAdvice(target){
var targetFunction = target.aFunction;
target.aFunction = new function(){
invokePreCall();
targetFunction.apply(target, arguments);
invokePostCall();
}
}
作为一名java程序员,我认为这是一个动态代理。 每当我编写这样的代码时,我认为有人必须创建一个非常聪明的库来执行常见的代理操作,这比我能赶时间做的好10%。 我期待一些东西,比如正确拦截任何给定对象的所有方法,这可能不是完全无关紧要的。 然后有不同类型的建议。 因此,虽然我并不期待像scriptaculous那么大的东西,但它肯定超过6行代码。
那么这些图书馆在哪里?
看看源代码似乎只使用jQuery作为命名空间,所以即使不想使用jQuery,你也可以尝试这个插件 。
Dojo Toolkit对AOP结构有很多支持,如下所示:
Eugene Lazutkin关于使用Dojo进行面向方面编程的博客文章
事实上你已经能够做到这一点我认为意味着有一个库以纯JavaScript的形式实现它,即上面的例子。 如您所知,设计模式可以应用于JavaScript,因此我认为我将向您提供的建议如下是Google和Yahoo GUI开发人员:
第14章:代理模式。 参考那里的解决方案。 您可能仍然喜欢您的方法,或者您可以从他们的方法中找到提示。
干杯,
安德鲁
我不认为你可以拦截所有功能。
您可以做的最好的事情是迭代对象的所有元素并查找任何函数:
for elem in someObject {
if typeof(elem) == "function" {
// replace the function
}
}
麻烦的是,如果你以后添加一个函数,它不会通过代理路由。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.