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 关闭IE6、IE7
Jun 01 Javascript
关于JavaScript的面向对象和继承有利新手学习
Jan 11 Javascript
jquery简单实现鼠标经过导航条改变背景图
Dec 17 Javascript
JavaScript更改原始对象valueOf的方法
Mar 19 Javascript
JavaScript实现添加、查找、删除元素
Jul 02 Javascript
jQuery实现的倒计时效果实例小结
Apr 16 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
Jun 07 Javascript
教你一步步用jQyery实现轮播器
Dec 18 Javascript
浅谈pc端rem字体设置的问题
Aug 03 Javascript
vue 的点击事件获取当前点击的元素方法
Sep 15 Javascript
Node.js API详解之 readline模块用法详解
May 22 Javascript
javascript this指向相关问题及改变方法
Nov 19 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 explode函数实例代码
2012/02/27 PHP
PHP制作万年历
2015/01/07 PHP
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
JavaScript 原型学习总结
2010/10/29 Javascript
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
用JQUERY增删元素的代码
2012/02/14 Javascript
JQuery 操作/获取table具体代码
2013/06/13 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
影响jQuery使用的14个方面
2014/09/01 Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
2015/08/06 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
jquery操作select取值赋值与设置选中实例
2017/02/28 Javascript
WebStorm ES6 语法支持设置&amp;babel使用及自动编译(详解)
2017/09/08 Javascript
JS简单获得节点元素的方法示例
2018/02/10 Javascript
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
js 对象使用的小技巧实例分析
2019/11/08 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
Python中用Spark模块的使用教程
2015/04/13 Python
Python实现的数据结构与算法之队列详解
2015/04/22 Python
Python教程之全局变量用法
2016/06/27 Python
Windows下PyCharm安装图文教程
2018/08/27 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
萨克斯第五大道英国:Saks Fifth Avenue英国
2019/04/01 全球购物
行政专员工作职责
2013/12/22 职场文书
公司企业表扬信
2014/01/11 职场文书
黄金搭档广告词
2014/03/21 职场文书
干部作风建设工作总结
2014/10/29 职场文书
法人身份证明书
2015/06/18 职场文书
2016大学生求职自荐信范文
2016/01/28 职场文书
初中数学课堂教学反思
2016/02/17 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
教你如何使用Python实现二叉树结构及三种遍历
2021/06/18 Python
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript