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 相关文章推荐
js的一些常用方法小结
Jun 29 Javascript
html中table数据排序的js代码
Aug 09 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
Aug 01 Javascript
jquery获取radio值(单选组radio)
Oct 16 Javascript
深入分析jsonp协议原理
Sep 26 Javascript
使用jQuery制作浮动工具栏的实例分享
May 13 Javascript
JavaScript闭包实例详解
Jun 03 Javascript
纯js实现页面返回顶部的动画(超简单)
Aug 10 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
Oct 12 Javascript
Node.js使用supervisor进行开发中调试的方法
Mar 26 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
Oct 14 Javascript
JS桶排序的简单理解与实现方法示例
Nov 25 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
PHP 中关于ord($str)&amp;gt;0x80的详细说明
2012/09/23 PHP
php数组添加与删除单元的常用函数实例分析
2015/02/16 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
JavaScript实现动态增加文件域表单
2009/02/12 Javascript
浅谈Javascript中Object与Function对象
2015/09/26 Javascript
常用原生js自定义函数总结
2016/11/20 Javascript
JavaScript实现256色转灰度图
2017/02/22 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
vue.js 实现评价五角星组件的实例代码
2018/08/13 Javascript
Vue2.0 v-for filter列表过滤功能的实现
2018/09/07 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
Vue源码学习之关于对Array的数据侦听实现
2019/04/23 Javascript
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
python PyTorch参数初始化和Finetune
2018/02/11 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
2018/04/27 Python
Python使用ConfigParser模块操作配置文件的方法
2018/06/29 Python
python flask安装和命令详解
2019/04/02 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
用Python绘制漫步图实例讲解
2020/02/26 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
Python计算矩阵的和积的实例详解
2020/09/10 Python
Django Form常用功能及代码示例
2020/10/13 Python
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
个人自我鉴定范文
2013/10/04 职场文书
大学专科自荐信
2014/06/17 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
租房协议书
2014/09/12 职场文书
2015个人简历自我评价语
2015/03/11 职场文书
初中英语教学反思范文
2016/02/15 职场文书
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python
OpenCV-Python实现油画效果的实例
2021/06/08 Python