首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery :用相同的建议为同一个方法名定义多个目标

jquery :用相同的建议为同一个方法名定义多个目标
EN

Stack Overflow用户
提问于 2013-09-11 09:39:08
回答 2查看 472关注 0票数 1

我使用AOP Jquery,其许可如下:

代码语言:javascript
复制
/**
* 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
*
*/

当我在这些目标中有相同的方法名时,我是否可以定义多个目标:

示例:

代码语言:javascript
复制
  var Person={
       doctor:{

          setResume:function(){
           }  

        },
        engineer:{

          setResume:function(){
           }  

        }
}

而不是:

代码语言:javascript
复制
$.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 '):

    }
});

我想举个例子:

代码语言:javascript
复制
$.aop.before({
    target:[Person.doctor,Person.engineer],
// or target :'Person.*' ...
    method:'setResume'},function(args) {
        console.log('setResume will be called '):

    }
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-12 10:04:32

如果,就像@mgroves所说的那样,看起来不是,那么安全的方法是:

代码语言:javascript
复制
$.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 2:a函数:function(args){}

票数 0
EN

Stack Overflow用户

发布于 2013-09-11 13:24:30

根据对jQuery AOP源代码的快速回顾,看起来,不,这是行不通的。但是,我不明白为什么您不能创建一个补丁来允许这种行为,或者向所有者建议这个特性,或者仅仅创建您自己的助手函数。类似这样的东西(未经测试,请考虑它是伪代码):

代码语言:javascript
复制
$.aop.beforeMultiple = function(targets, method) {
    for(var i =0;i<targets.length;i++)
        $.aop.before(targets[i], method);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18737684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档