`

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实现

    AOP面向切面编程的JavaScript实现

    详解在Javascript中进行面向切面编程

    主要介绍了Javascript面向切面编程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    lotus domino javascript調用代理

    lotus domino javascript調用代理

    深入理解JavaScript系列

    第3部分深入探索JavaScript,介绍了语法、值、运算符、布尔类型、数字、字符串、语句、异常捕获、函数、变量、对象与继承、数组、正则表达式、Date、Math、JSON、标准全局变量、编码和JavaScript、ECMAScript 5的新...

    javascript指南和函数式编程

    javascript高效编程和函数式编程指南书籍PDF,适合深入学习javascript

    JavaScript事件代理和委托详解

    这里介绍一下javascript delegate的用法和原理,以及Dojo,jQuery等框架中delegate的接口。 JavaScript事件代理 事件代理在JS世界中一个非常有用也很有趣的功能。当我们需要对很多元素添加事件的时候,可以通过将...

    JavaScript语言精粹(高清电子版)和高性能JavaScript 双语版

    JavaScript语言精粹(高清电子版)和高性能JavaScript 双语版

    javascript帮助文档javascript帮助文档

    javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档

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

    下面小编就为大家分享一篇JavaScript实现AOP的方法(面向切面编程,装饰者模式),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    javascriptAPI,javascript参考资料,javascript

    javascriptAPI,javascript参考资料,javascript

    JavaScript简单教材JavaScript简单教材

    JavaScript简单教材JavaScript简单教材JavaScript简单教材JavaScript简单教材JavaScript简单教材JavaScript简单教材JavaScript简单教材JavaScript简单教材JavaScript简单教材

    深入理解JavaScript系列(.chm)

    深入理解JavaScript系列(5):强大的原型和原型链 深入理解JavaScript系列(6):S O L I D五大原则之单一职责SRP 深入理解JavaScript系列(7):S O L I D五大原则之开闭原则OCP 深入理解JavaScript系列(8):...

    javascript和jsp面之间的传值.docx

    javascript和jsp面之间的传值.docx

    [JavaScript权威指南(第6版)]

    《JavaScript权威指南(第6版)》主要讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScript API。本书第6版涵盖了HTML5和ECMAScript 5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增...

    JavaScript手册 JavaScript手册

    JavaScript手册 JavaScript手册 JavaScript手册

    JavaScript语言参考手册

    本书是 JavaScript 语言的参考手册,包括核心语言中的对象和客户端、服务器端的扩展。JavaScript 是 Netscape 跨平台的基于对象的适合于客户和服务器的脚本语言。 你应该已经知道的东西 在哪里能找到 JavaScript ...

    JavaScript宝典(第7版)

    通过认真研读本书,您将可以编写脚本来实现翻转等效果,并熟练使用Web 2.0和JavaScript子例程库等功能。 主要内容 ● 探讨最新的JavaScript编程技术 ● 制定脚本编写策略并选择合适的工具 ● 深入了解终止器、生成器...

    JavaScript征途

    《JavaScript征途》是一本学习JavaScript语言的权威书籍,在遵循语言学习的特殊规律基础上精心选材,力争做到统筹、有序,在结构上体现系统性和完整性。同时还重点挖掘JavaScript基于对象的开发精髓及函数式编程两个...

Global site tag (gtag.js) - Google Analytics