Javascript jqueryaop:使用相同的advice为相同的方法名定义多个目标

Javascript jqueryaop:使用相同的advice为相同的方法名定义多个目标,javascript,aop,Javascript,Aop,我使用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 * * Ver

我使用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 '):

    }
});

根据对这篇文章的快速回顾,看起来,不,这行不通。但是,我不明白为什么您不能创建一个补丁来允许这种行为,或者向所有者建议该功能,或者仅仅创建您自己的帮助器函数。类似的东西(未经测试,认为它是伪代码):

$.aop.beforeMultiple=函数(目标、方法){

对于(var i=0;i),基于一个快速的回顾,看起来,不,这不起作用。但是,我不明白为什么你不能创建一个补丁来允许这个行为,或者向所有者提出这个特性,或者只是创建你自己的帮助函数。类似的东西(未经测试,认为它是伪代码):

$.aop.beforeMultiple=函数(目标、方法){

对于(var i=0;i如果,它看起来像,否,正如@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.beforeMultiple=函数(){
var targets=参数[0]。目标;

对于(var i=0;i如果,它看起来像,否,正如@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.beforeMultiple=函数(){
var targets=参数[0]。目标;

对于(var i=0;iCurious)您为什么发布许可证?这与问题在某种程度上相关吗?好奇您为什么发布许可证?这与问题在某种程度上相关吗?