`

javascript的代理和切面

阅读更多
    Java里有面向切面的实现方式,可以监控包、对象、函数等的行为,以及动态修改函数的参数和返回值等。

    那么在JavaScript里是否有对应实现?在用到对一个函数进行切面时,如何监控函数的参数
和执行过程,以及修改函数的执行方式。

    在用jasmine对代码进行测试时,jasmine使用了一个很优雅的方式,使用spyOn对函数进行监控。虽然没有看过jasmine的源代码,但时,spyOn函数修改了函数的默认行为。受此启发,JavaScript里是可以实现切面操作的。

    实现方式:

/**
 * 原函数
 * @param {type} val
 * @returns {Number}
 */

function fun(val){
        return val+1;
    }


/**
 * 注册前置函数
 * @returns {undefined}
 */
function before(){
    var f = fun;
    window.fun = function(val){  
        //修改参数
        val = val+2;
        
        //执行原函数
       return f(val); 
    };
}

//注册
before(); 

//执行
var rst = fun(1);


console.log(rst);





结果输出:4




    实际在应用中,我们可以将代理和切面功能完善一下,给出一个完善的方法,如
/**
 * 
 * @param {type} fun 原函数
 * @param {type} obj fun所属的对象
 * @param {type} before 前置函数
 * @param {type} after  后置函数
 */


function proxy(fun,obj,before,after) 

来完成代理和切面。
分享到:
评论

相关推荐

    AOP面向切面编程的JavaScript实现

    这些库提供了一套API,用于定义切面、通知(advises,如前置通知、后置通知、环绕通知等)和连接点(join points)。这些库可以帮助开发者更容易地管理和维护面向切面的代码。 4. **切点(Pointcuts)**: 切点是...

    proxy-fun, 为了学习如何使用JavaScript代理,或者只是看看有什么可能.zip

    在标题和描述中提到的"proxy-fun"项目显然是一个专注于探索和展示JavaScript代理功能的开源资源。通过这个项目,你可以学习到如何利用代理对象来实现各种高级的编程技巧,比如数据验证、动态行为控制、模拟对象等。 ...

    JavaScript实现的相册

    10. **AOP(面向切面编程)**:在某些情况下,可能利用JavaScript的装饰器或代理(Proxy)实现切面编程,如记录日志、性能监控等。 通过理解和掌握以上知识点,你可以创建出一个功能完善的JavaScript相册,提供丰富...

    JavaScript实现AOP详解(面向切面编程,装饰者模式)

    面向切面编程(Aspect-Oriented Programming,简称AOP)是一种编程范式,它的核心思想是将系统中分散的、与业务逻辑无关的功能(横切关注点,如日志、安全、事务等)从业务逻辑中分离出来,使得开发者能够将这些功能...

    JavaScript高级与设计模式.zip

    在JavaScript中,可以用于为对象添加额外功能,如AOP(面向切面编程)。 5. **模块模式(Module)**:JavaScript中,可以利用闭包来创建私有作用域,保护内部变量和方法,只暴露必要的接口。这有助于代码组织和防止...

    javascript _aop

    JavaScript 面向切面编程(AOP,Aspect-Oriented Programming)是一种编程范式,旨在提高代码的可重用性和模块化。在传统的面向对象编程中,我们通常会将业务逻辑、数据处理和系统关注点(如日志、事务管理、错误...

    java代理源码

    在Spring MVC中,代理模式常被用于AOP(面向切面编程)。AOP允许我们在不修改原有业务逻辑的情况下,插入额外的处理逻辑,如日志记录、权限控制等。Spring AOP提供了两种实现方式:一种是基于代理的,另一种是基于...

    基于js的简易aop框架

    在JavaScript中,面向切面编程(Aspect-Oriented Programming,简称AOP)是一种设计模式,它旨在提高代码的可复用性和可维护性,通过分离关注点来组织代码。AOP允许开发者定义“切面”,这些切面封装了特定的关注点...

    proxy-javascript:了解Javascript代理并跟踪进度

    5. AOP(面向切面编程):通过拦截方法调用来实现日志记录、性能监控等功能。 四、Proxy的局限性 尽管Proxy功能强大,但也有其局限性。例如,Proxy无法拦截原始类型的值,只能代理对象。另外,对于某些非标准的...

    JavaScript的十五种设计模式

    常用于扩展对象的行为,比如AOP(面向切面编程)。 7. **观察者模式**:定义了对象间的一种一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在JavaScript中,EventEmitter...

    javascript and Spring3.0下载地址

    2. **AOP(面向切面编程)**:提供切面、通知、目标、代理等概念,实现代码的解耦和增强。 3. **MVC框架**:用于构建Web应用,包含DispatcherServlet、Model-View-Controller模式、视图解析器。 4. **Spring JDBC*...

    ArcGIS API for Javascript 开发教程 webapp builder协同ADF

    最后,代理的使用是连接ArcGIS API for JavaScript和不同服务器资源的重要知识点,尤其是在跨域访问受限的情况下。 ArcGIS API for JavaScript开发教程提供了丰富的知识点,涵盖了从基础概念、地图操作、符号渲染、...

    JavaScript的函数劫持

    - **AOP(面向切面编程)**:在函数调用前后加入特定逻辑,比如事务管理、权限验证等。 - **模拟与测试**:在测试环境中替换某些复杂的依赖,简化测试逻辑。 在提供的标签"源码"和"工具"中,我们可以推测这篇博客...

    使用AOP改善javascript代码

    定义一个代理函数,用于发送数据请求,并在该函数执行前使用before切面函数动态添加参数,而不需要关心具体的请求类型。 5. 职责链模式 职责链模式允许将一系列的请求沿着处理者链进行传递,直到某个处理者处理该...

    Spring_aop_xml.zip

    在“src”目录中,我们可以找到Java源代码文件,包括被代理的目标对象(Target Object)和切面类(Aspect)。目标对象是那些需要切面逻辑增强的对象,而切面类则包含了我们的业务逻辑和通知。通过在XML配置文件中...

    前端项目-javascript-hooker.zip

    4. **AOP(面向切面编程)**:借鉴后端编程的概念,JavaScript中的AOP库如aspect.js,允许开发者定义切面(Advice),在指定的连接点(Join Point)如方法调用前/后执行。这样可以在不修改原有代码的情况下,插入...

    JavaScript中AOP的实现与应用

    在了解JavaScript中的AOP(面向切面编程)之前,首先需要明确AOP的基本概念。AOP是一种编程范式,旨在将横切关注点(cross-cutting concerns)从业务逻辑中分离出来。横切关注点是那些对多个地方的代码造成影响的点...

Global site tag (gtag.js) - Google Analytics