A2D JS框架 - AOP封装
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封装的更多相关文章
- A2D JS框架 - DES加密解密 与 Cookie的封装(C#与js互相加密解密)
这次实现了JS端的DES加密与解密,并且C#端也能正确解析DES的密文(反之也实现了) 使用的代码如下,非常方便: <script src="A2D.js" type=&qu ...
- A2D JS框架
写了个微型JS框架 主要实现了:showDialog.noConflict.定位元素.event绑定功能 使用端的代码: <head> <title></title> ...
- A2D JS框架 - loadScript实现
其实这个功能比较小,本着自己造轮子的优良传统....就自己造一个好了 <head> <title></title> <script src="A2D ...
- A2D JS框架 - Web API CSRF保护实现
这次自己实现了类似jQuery中ajax调用的方法,并且针对RESTFul进行了改造和集成,实现的A2D AJAX接口如下: $.ajax.RESTFulGetCollection("/ap ...
- js框架封装,模拟jQuery封装
模拟jQuery框架,利用原生的js技术,封装一个js框架,以加深对jQuery的常用api的使用和面向对象原理的理解:一:结构部分首先利用闭包,构造一个自执行函数,然后利用选择器函数Sizzle,获 ...
- 事务框架之声明事务(自动开启,自动提交,自动回滚)Spring AOP 封装
利用Spring AOP 封装事务类,自己的在方法前begin 事务,完成后提交事务,有异常回滚事务 比起之前的编程式事务,AOP将事务的开启与提交写在了环绕通知里面,回滚写在异常通知里面,找到指定的 ...
- 微信js框架第二篇(创建完整界面布局)
接着昨天的继续谈关于微信新出的这个js框架,今天主要谈一个页面的创建到布局的详细步骤. 一.创建一个完整页面 页面你可以创建在项目的任何节点,只要你在入口文件正确引入创建该页面的路径就可使 ...
- JS框架
s框架就是将常用的方法进行封装,方便调取使用.一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计.协作构件之间的依赖关系.责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方 ...
- 前端Js框架汇总
概述: 有些日子没有正襟危坐写博客了,互联网飞速发展的时代,技术更新迭代的速度也在加快.看着Java.Js.Swift在各领域心花路放,也是煞是羡慕.寻了寻.net的消息,也是振奋人心,.net co ...
随机推荐
- <自动化测试方案_1>第一章、为什么要做自动化测试?(Why)
第一章.为什么要做自动化测试?(Why) 测试的产品分为:桌面程序(C/S).web应用(B/S) 我们的产品是B/S (一)迭代中省去人力测试非新增功能: 在项目中由于测试时间的限制,测试中只能实现 ...
- JAVA设计模式——代理(静态代理)
定义 为其它的对象提供一种代理,以控制这个对象的访问 使用场景 当不想直接访问某个对象的时候,就可以通过代理 1.不想买午餐,同事帮忙带 2.买车不用去厂里,去4s店 3.去代理点买火车票,不用去车站 ...
- LeetCode题解之Find Bottom Left Tree Value
1.题目描述 2.问题分析 使用层序遍历思想 3.代码 int findBottomLeftValue(TreeNode* root) { if (root == NULL) ; queue<T ...
- Win10 - MySQL-zip安装方法
Win10 - MySQL-zip安装方法 安装步骤 1.下载,到MySQL官网:https://dev.mysql.com/downloads/mysql/ 2.解压安装包 解压下载的安装包,放到你 ...
- python3使用selenium + Chrome基础操作代码
selenium是Python的第三方库,使用前需要安装.但是如果你使用的是anaconda,就可以省略这个步骤,为啥?自带,任性. 安装命令: pip install selenium (一)使用s ...
- 利用开机账户登录“轻松访问”创建Windows后门
利用开机账户登录“轻松访问”创建Windows后门 实验原理: 利用登录账户界面的“轻松访问”中的“放大镜”,把它替换为cmd.exe程序,实现在不登录的情况下打开命令提示符,并进行一些操作(打开的c ...
- 通过jquery隐藏和显示元素
通过jquery隐藏和显示元素 调用jquery本身提供的函数 $("xxx").hide();//隐藏xxx $("xxx").show();//显示xxx ...
- C++多线程同步技巧(四)--- 信号量
简介 信号量是维护0到指定最大值之间的同步对象.信号量状态在其计数大于0时是有信号的,而其计数是0时是无信号的.信号量对象在控制上可以支持有限数量共享资源的访问,可以用于线程同步,预防死锁等领域. 信 ...
- IO Redirect 与 Pipe
对于任何一个进程,在启动时,都会打开三个流:stdin(标准输入), stdout(标准输出), stderr(标准错误输出).Stdout,stderr是process与Display之间,stdi ...
- June 13. 2018 Week 24th. Wednesday
Life is too short to miss out anything; try to take it slowly. 生命短暂,放慢脚步,别错过任何沿途的风景. From Ferris Bue ...