AOP在js中的实现,先看看用法吧:

        var A2D = $.noConflict();//不要误会,此乃我自己写的A2D框架,非jQuery

        function fn1(name, age) {
console.log("name: " + name);
console.log("age: " + age);
}
function b1() {
console.log("b1");
console.log("b1, parameters - 0: " + arguments[0]);
console.log("b1, parameters - 1: " + arguments[1]);
console.log("b1, parameters - 2: " + arguments[2]);
console.log("b1, parameters - 3: " + arguments[3]);
console.log("b1, parameters - 4: " + arguments[4]);
console.log("b1, parameters - 5: " + arguments[5]);
}
function b2() {
console.log("b2");
}
function a1() {
console.log("a1");
}
function a2() {
console.log("a2");
} var aopfn1 = A2D.aop(fn1, {
before: [b1, b2],
after: [a1, a2]
});
aopfn1.execute("aaron", 20);

核心A2D代码实现(before和after AOP,实现了6个参数):

function aop(fn, config) {
if (!fn instanceof Function)
alert("fn must be a function");
if (config == null || config == undefined || !config instanceof Object)
alert("config can not be empty"); function aopWrapper(fn, config) {
this.realFunction = fn;
this.beforeFunctions = config.before.concat();
this.afterFunctions = config.after.concat();
}
aopWrapper.prototype.execute = function () {
if (this.beforeFunctions)
for (var fn in this.beforeFunctions)
this.beforeFunctions[fn].call(this.realFunction, arguments[0],
arguments[1],
arguments[2],
arguments[3],
arguments[4],
arguments[5]);
this.realFunction.call(this.realFunction, arguments[0],
arguments[1],
arguments[2],
arguments[3],
arguments[4],
arguments[5]);
if (this.afterFunctions)
for (var fn in this.afterFunctions)
this.afterFunctions[fn].call(this.realFunction, arguments[0],
arguments[1],
arguments[2],
arguments[3],
arguments[4],
arguments[5]);
} wrapper = new aopWrapper(fn, config); return wrapper;
}

有图有真相:

搞前端的,为什么这么难。。。。

A2D JS框架 - AOP封装的更多相关文章

  1. A2D JS框架 - DES加密解密 与 Cookie的封装(C#与js互相加密解密)

    这次实现了JS端的DES加密与解密,并且C#端也能正确解析DES的密文(反之也实现了) 使用的代码如下,非常方便: <script src="A2D.js" type=&qu ...

  2. A2D JS框架

    写了个微型JS框架 主要实现了:showDialog.noConflict.定位元素.event绑定功能 使用端的代码: <head> <title></title> ...

  3. A2D JS框架 - loadScript实现

    其实这个功能比较小,本着自己造轮子的优良传统....就自己造一个好了 <head> <title></title> <script src="A2D ...

  4. A2D JS框架 - Web API CSRF保护实现

    这次自己实现了类似jQuery中ajax调用的方法,并且针对RESTFul进行了改造和集成,实现的A2D AJAX接口如下: $.ajax.RESTFulGetCollection("/ap ...

  5. js框架封装,模拟jQuery封装

    模拟jQuery框架,利用原生的js技术,封装一个js框架,以加深对jQuery的常用api的使用和面向对象原理的理解:一:结构部分首先利用闭包,构造一个自执行函数,然后利用选择器函数Sizzle,获 ...

  6. 事务框架之声明事务(自动开启,自动提交,自动回滚)Spring AOP 封装

    利用Spring AOP 封装事务类,自己的在方法前begin 事务,完成后提交事务,有异常回滚事务 比起之前的编程式事务,AOP将事务的开启与提交写在了环绕通知里面,回滚写在异常通知里面,找到指定的 ...

  7. 微信js框架第二篇(创建完整界面布局)

    接着昨天的继续谈关于微信新出的这个js框架,今天主要谈一个页面的创建到布局的详细步骤. 一.创建一个完整页面       页面你可以创建在项目的任何节点,只要你在入口文件正确引入创建该页面的路径就可使 ...

  8. JS框架

    s框架就是将常用的方法进行封装,方便调取使用.一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计.协作构件之间的依赖关系.责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方 ...

  9. 前端Js框架汇总

    概述: 有些日子没有正襟危坐写博客了,互联网飞速发展的时代,技术更新迭代的速度也在加快.看着Java.Js.Swift在各领域心花路放,也是煞是羡慕.寻了寻.net的消息,也是振奋人心,.net co ...

随机推荐

  1. leetcode-66.加一

    leetcode-66.加一 题意 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外,这个 ...

  2. Apache 配置方法(虚拟目录、域名、虚拟主机等)

    基本配置 Define SRVROOT "C:/Apache24"     #宏定义一个主站点目录常量ServerRoot "${SRVROOT}"       ...

  3. C#-异常处理(十四)

    概念 异常处理是指程序在运行过程中,发生错误会导致程序退出,这种错误,就叫做异常 但并不是所有的错误都是异常 而处理这种错误,称为异常处理 异常处理实际是不断去发掘异常.修改异常,使程序更稳定 异常处 ...

  4. mssql sqlserver 下文分享一种新颖的字符串截取方法

    原文地址:http://www.maomao365.com/?p=7307 摘要:    以前分割字符串时,都使用类似split函数的方式处理,下文分享一种对有规律的字符串的分隔方式,    即:1. ...

  5. Spring MVC 请求映射 (二)

    完整的项目案例: springmvc.zip 目录 实例 项目结构: 一.配置web.xml <?xml version="1.0" encoding="UTF-8 ...

  6. c/c++ 用克鲁斯卡尔(kruskal)算法构造最小生成树

    c/c++ 用克鲁斯卡尔(kruskal)算法构造最小生成树 最小生成树(Minimum Cost Spanning Tree)的概念: 假设要在n个城市之间建立公路,则连通n个城市只需要n-1条线路 ...

  7. iOS application/json上传文件等

    在和sever后台交互的过程中.有时候.他们需要我们iOS开发者以“application/json”形式上传. NSString *accessUrl = [NSString stringWithF ...

  8. 5. svg学习笔记-坐标系变换

    之前我们编写图形元素的时候,编写好了位置大小就是固定的,通过坐标系变换,可以移动缩放,旋转图形,但必须声明的是,进行变换时是图形相对于坐标系的变化,就是图形是不发生变化的,而是坐标系发生了变化,比如缩 ...

  9. [转]JIRA 7.2.6与Confluence 6.0.3的安装与配置之MS SQL Server版

    相关软件版本信息 说明:下方软件可以点击链接,通过百度云盘进行下载. 操作系统:Windows 10(密码:foht)或者Windows Server 2012(密码:lsad): 数据库:SQL S ...

  10. March 02nd, 2018 Week 9th Friday

    Make hay while the sun shines. 勿失良机. Last night the toothache woke me up and it was very difficult f ...