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学习笔记之Helloworld
Dec 22 Javascript
关于锚点跳转及jQuery下相关操作与插件
Oct 01 Javascript
优化Jquery,提升网页加载速度
Nov 14 Javascript
js实现div闪烁原理及实现代码
Jun 24 Javascript
Javascript连接Access数据库完整实例
Aug 03 Javascript
学习javascript面向对象 javascript实现继承的方式
Jan 04 Javascript
JQuery日期插件datepicker的使用方法
Mar 03 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
Aug 29 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
Dec 02 Javascript
vue弹窗插件实战代码
Sep 08 Javascript
js实现星星海特效的示例
Sep 28 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
Oct 21 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
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
UCenter 批量添加用户的php代码
2012/07/17 PHP
php计算一个文件大小的方法
2015/03/30 PHP
Laravel实现批量更新多条数据
2020/04/06 PHP
代码精简的可以实现元素圆角的js函数
2007/07/21 Javascript
js自定义事件代码说明
2011/01/31 Javascript
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
导航跟随滚动条置顶移动示例代码
2013/09/11 Javascript
node.js中的emitter.emit方法使用说明
2014/12/10 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
JS实现六位字符密码输入器功能
2016/08/19 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
监控Nodejs的性能实例代码
2019/07/02 NodeJs
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
[12:36]《DOTA2》国服注册与激活指南全攻略
2013/04/28 DOTA
python实现的用于搜索文件并进行内容替换的类实例
2015/06/28 Python
python3写爬取B站视频弹幕功能
2017/12/22 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
django用户注册、登录、注销和用户扩展的示例
2018/03/19 Python
Python生成器generator用法示例
2018/08/10 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
浅谈PYTHON 关于文件的操作
2019/03/19 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
纽约复古灵感的现代珠宝品牌:Lulu Frost
2018/03/03 全球购物
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
银行会计职员个人的自我评价
2013/09/29 职场文书
集团薪酬管理制度
2014/01/13 职场文书
护士旷工检讨书
2015/08/15 职场文书
Django显示可视化图表的实践
2021/05/10 Python
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python