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中reverse函数的用法详解
Dec 26 Javascript
Extjs表单常见验证小结
Mar 07 Javascript
JS模仿手机端九宫格登录功能实现代码
Apr 28 Javascript
jQuery使用ajax跨域获取数据的简单实例
May 18 Javascript
vue2.0 自定义日期时间过滤器
Jun 07 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
Jul 17 Javascript
详解angularjs 学习之 scope作用域
Jan 15 Javascript
JS实现为动态创建的元素添加事件操作示例
Mar 17 Javascript
详解vue axios二次封装
Jul 22 Javascript
jQuery+PHP实现上传裁剪图片
Jun 29 jQuery
vuedraggable+element ui实现页面控件拖拽排序效果
Jul 29 Javascript
微信小程序点击item使之滚动到屏幕中间位置
Mar 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
php桌面中心(一) 创建数据库
2007/03/11 PHP
php set_time_limit()函数的使用详解
2013/06/05 PHP
php抓取页面的几种方法详解
2013/06/17 PHP
重新认识php array_merge函数
2014/08/31 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
JS Array对象入门分析
2008/10/30 Javascript
Javascript 错误处理的几种方法
2009/06/13 Javascript
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
2010/01/22 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
浅谈JavaScript的内置对象和浏览器对象
2016/06/03 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
JS数组操作之增删改查的简单实现
2017/08/21 Javascript
vue.js实现格式化时间并每秒更新显示功能示例
2018/07/07 Javascript
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
JavaScript中window和document用法详解
2020/07/28 Javascript
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
python 构造三维全零数组的方法
2018/11/12 Python
Python如何实现动态数组
2019/11/02 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
如何利用Python动态模拟太阳系运转
2020/09/04 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
CSS3教程(1):什么是CSS3
2009/04/02 HTML / CSS
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
个人求职信范文分享
2014/01/06 职场文书
分层教学实施方案
2014/03/19 职场文书
银行内勤岗位职责
2014/04/09 职场文书
2014年护士工作总结范文
2014/11/11 职场文书
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL
详解Python+OpenCV进行基础的图像操作
2022/02/15 Python
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL