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 相关文章推荐
JavaScript Sort 表格排序
Oct 31 Javascript
Jquery 点击按钮显示和隐藏层的代码
Jul 25 Javascript
基于jquery的bankInput银行卡账号格式化
Aug 22 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
Dec 11 Javascript
jQuery 中$(this).index与$.each的使用指南
Nov 20 Javascript
asp.net+js实现金额格式化
Feb 27 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
Jun 23 Javascript
给easyui datebox扩展一个清空的实例
Nov 09 Javascript
Vue 短信验证码组件开发详解
Feb 14 Javascript
JS实现的视频弹幕效果示例
Aug 17 Javascript
模块化react-router配置方法详解
Jun 03 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
Mar 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
Thinkphp实现短信验证注册功能
2016/10/18 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
2021/02/22 PHP
日期 时间js控件
2009/05/07 Javascript
javascript DOM编程实例(智播客学习)
2009/11/23 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
2013/11/15 Javascript
AngularJS数据源的多种获取方式汇总
2016/02/02 Javascript
jQuery实现返回顶部功能
2016/02/23 Javascript
Vue表单实例代码
2016/09/05 Javascript
JavaScript实现二分查找实例代码
2017/02/22 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
[02:57]2014DOTA2国际邀请赛 选手辛苦解说更辛苦
2014/07/10 DOTA
Python时间戳与时间字符串互相转换实例代码
2013/11/28 Python
linux系统使用python获取cpu信息脚本分享
2014/01/15 Python
详解Python中for循环的使用方法
2015/05/14 Python
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
python+pyqt5编写md5生成器
2019/03/18 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
让你的Python代码实现类型提示功能
2019/11/19 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
python实现b站直播自动发送弹幕功能
2021/02/20 Python
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
StubHub新加坡:购买和出售全球活动门票
2017/03/10 全球购物
优秀学生干部个人的自我评价
2013/10/04 职场文书
项目建议书范文
2014/05/12 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
2014年超市员工工作总结
2014/11/18 职场文书
教师先进个人材料
2014/12/17 职场文书
廉洁自律个人总结
2015/02/14 职场文书
离职信范本
2015/06/23 职场文书
python绘图subplots函数使用模板的示例代码
2021/04/30 Python
JS实现扫雷项目总结
2021/05/19 Javascript
python基础之模块的导入
2021/10/24 Python
详解Oracle块修改跟踪功能
2021/11/07 Oracle
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL