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 相关文章推荐
jquery 经典动画菜单效果代码
Jan 26 Javascript
解决Extjs上传图片无法预览的解决方法
Mar 22 Javascript
Javascript正则控制文本框只能输入整数或浮点数
Sep 02 Javascript
JavaScript模拟实现继承的方法
Mar 30 Javascript
JavaScript中用getDate()方法返回指定日期的教程
Jun 09 Javascript
js获取Get值的方法
Sep 29 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
Dec 20 Javascript
详解Vue中状态管理Vuex
May 11 Javascript
Vue实战之vue登录验证的实现代码
Oct 31 Javascript
详解操作虚拟dom模拟react视图渲染
Jul 25 Javascript
Vue实现表格中对数据进行转换、处理的方法
Sep 06 Javascript
详解Vue 全局变量,局部变量
Apr 17 Javascript
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
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
PHP设计模式之工厂模式与单例模式
2016/09/28 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
accesskey 提交
2006/06/26 Javascript
统计出现最多的字符次数的js代码
2010/12/03 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
js实现将选中内容分享到新浪或腾讯微博
2015/12/16 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
在小程序中使用腾讯视频插件播放教程视频的方法
2018/07/10 Javascript
微信小程序template模版的使用方法
2019/04/13 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
2019/10/11 Javascript
webpack常用配置总览(小结)
2019/11/18 Javascript
详解Vite的新体验
2021/02/22 Javascript
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
Python中的descriptor描述器简明使用指南
2016/06/02 Python
解决安装python库时windows error5 报错的问题
2018/10/21 Python
python 伯努利分布详解
2020/02/25 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
css3弹性盒模型(Flexbox)详细介绍
2014/10/08 HTML / CSS
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
计算机专业求职信
2014/06/02 职场文书
化工专业自荐书
2014/06/16 职场文书
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
一年级语文教学随笔
2015/08/14 职场文书
matlab xlabel位置的设置方式
2021/05/21 Python
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis
Mysql查询时间区间日期列表,不会由于数据表数据影响
2022/04/19 MySQL
python 镜像环境搭建总结
2022/09/23 Python