jquery AOP:使用相同的建议为相同的方法名称定义多个目标
jquery AOP:Define many targets for the same method name with the same advise
>我使用AOP Jquery,其许可如下:
/**
* jQuery AOP - jQuery plugin to add features of aspect-oriented programming (AOP) to jQuery.
* http://jquery-aop.googlecode.com/
*
* Licensed under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*
* Version: 1.3
*
* Cross-frame type detection based on Daniel Steigerwald's code (http://daniel.steigerwald.cz)
* http://gist.github.com/204554
*
*/
当我在这些目标中具有相同的方法名称时,我可以定义许多目标吗:
例:
var Person={
doctor:{
setResume:function(){
}
},
engineer:{
setResume:function(){
}
}
}
而不是:
$.aop.before({
target:Person.doctor,
method:'setResume'},function(args) {
console.log('setResume will be called '):
}
});
$.aop.before({
target:Person.engineer,
method:'setResume'},function(args) {
console.log('setResume will be called '):
}
});
我想要例如:
$.aop.before({
target:[Person.doctor,Person.engineer],
// or target :'Person.*' ...
method:'setResume'},function(args) {
console.log('setResume will be called '):
}
});
基于对jQuery AOP源代码的快速回顾,看起来,不,这行不通。但是,我不明白为什么您不能创建一个补丁来允许该行为,或者向所有者建议该功能,或者只是创建自己的帮助程序函数。 像这样的东西(未经测试,将其视为伪代码):
$.aop.beforeMultiple = function(targets, method) {
for(var i =0;i<targets.length;i++)
$.aop.before(targets[i], method);
}
如果,它看起来像,不,正如@mgroves所说,安全方法是:
$.aop.beforeMultiple = function() {
var targets=arguments[0].target;
for(var i =0;i<targets.length;i++)
{
arguments[0].target=targets[i];
$.aop.before.call(this, arguments);
}
}
因为$.aop.before
的参数是:
= Arg1:一个对象:{target:Aaaa,method:'yyy'}
=Arg2 : 一个函数 : function(args){}
相关文章:
- 用嵌套函数和默认函数定义函数
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 在放置目标时,输入并离开自定义事件
- 主干目标模型 = 未定义
- 力导向图-如果节点同时是源和目标,则定义节点的颜色
- 未捕获的类型错误:无法读取未定义的属性“目标”
- 自定义目标/运行任意代码
- 多个语义 UI 弹出窗口,其中目标元素在每个实例的 atribute 中定义
- Ember:无法读取未定义的属性“目标”
- jquery AOP:使用相同的建议为相同的方法名称定义多个目标
- Grunt:自定义任务-否;任务名称“;找到个目标
- Grunt自定义目标
- 如何用自定义HTMLElement作为目标来触发一个更改事件
- Firefox试图在按enter键时将表单发送到同一页面,而表单标记中没有定义目标
- 通过自定义数据与目标跟踪谷歌分析
- Javascript更新并忽略目标中的未定义字段
- 关于调用以DOM为目标的自定义方法的问题
- 表单事件目标未定义
- 使用上下文菜单在火狐中右键单击时未定义目标
- 事件.事件中未定义目标