javascript AOP 实现ajax回调函数使用比较方便


Posted in Javascript onNovember 20, 2010
function actsAsDecorator(object) { 
object.setupDecoratorFor = function(method) { 
if (! ('original_' + method in object) ) { 
object['original_' + method] = object[method]; 
object['before_' + method] = [ ]; 
object['after_' + method] = [ ]; 
object[method] = function() { 
var i; 
var b = this['before_' + method]; 
var a = this['after_' + method]; 
var rv; 
for (i = 0; i < b.length; i++) { 
b[i].call(this, arguments); 
} 
rv = this['original_' + method].apply(this, arguments); 
for (i = 0; i < a.length; i++) { 
a[i].call(this, arguments); 
} 
return rv; 
} 
} 
}; 
object.before = function(method, f) { 
object.setupDecoratorFor(method); 
object['before_' + method].unshift(f); 
}; 
object.after = function(method, f) { 
object.setupDecoratorFor(method); 
object['after_' + method].push(f); 
}; 
} 
/** 
Invoking 
*/ 
function Test(){ 
this.say1 = function(s){ 
alert(s); 
} 
this.say2 = function(s){ 
alert(s); 
} 
} 
var t = new Test(); 
actsAsDecorator(t); 
t.before("say1",beforeHander); 
t.after("say2",afterHander); 
test();
Javascript 相关文章推荐
循环 vs 递归浅谈
Feb 28 Javascript
jQuery实现鼠标划过添加和删除class的方法
Jun 26 Javascript
JQuery插件Marquee.js实现无缝滚动效果
Apr 26 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
Dec 20 Javascript
js 判断登录界面的账号密码是否为空
Feb 08 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
Jun 13 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
Feb 05 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
Aug 31 Javascript
详解关于Vue2.0路由开启keep-alive时需要注意的地方
Sep 18 Javascript
Node.js net模块功能及事件监听用法分析
Jan 05 Javascript
vue element upload组件 file-list的动态绑定实现
Oct 11 Javascript
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
Nov 20 #Javascript
javascript来定义类的规范小结
Nov 19 #Javascript
Javascript面象对象成员、共享成员变量实验
Nov 19 #Javascript
js 创建快捷方式的代码(fso)
Nov 19 #Javascript
javascript 函数参数限制说明
Nov 19 #Javascript
Javascript的并行运算实现代码
Nov 19 #Javascript
js里的prototype使用示例
Nov 19 #Javascript
You might like
YII模块实现绑定二级域名的方法
2014/07/09 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
JavaScript的Function详细
2006/11/14 Javascript
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
Jquery选择器 $实现原理
2009/12/02 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
jQuery对html元素的取值与赋值实例详解
2015/12/18 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
jquery.tableSort.js表格排序插件使用方法详解
2020/08/12 Javascript
JS实现电商放大镜效果
2017/08/24 Javascript
详解VueRouter进阶之导航钩子和路由元信息
2017/09/13 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
解决在Vue中使用axios用form表单出现的问题
2019/10/30 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
[52:00]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs Optic
2018/04/02 DOTA
python实现巡检系统(solaris)示例
2014/04/02 Python
python字符串过滤性能比较5种方法
2017/06/22 Python
python 实现简单的FTP程序
2019/12/27 Python
用Python开发app后端有优势吗
2020/06/29 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
python math模块的基本使用教程
2021/01/16 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
社区优秀志愿者材料
2014/02/02 职场文书
中学教师暑期培训方案
2014/08/27 职场文书
2015年共青团工作总结
2015/05/15 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
MySQL 1130异常,无法远程登录解决方案详解
2021/08/23 MySQL