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 相关文章推荐
IE无法设置短域名下Cookie
Sep 23 Javascript
根据一段代码浅谈Javascript闭包
Dec 14 Javascript
JavaScript实现简单图片滚动附源码下载
Jun 17 Javascript
js propertychange和oninput事件
Sep 28 Javascript
js实现图片从左往右渐变切换效果的方法
Feb 06 Javascript
jQuery操作cookie
Aug 08 Javascript
原生js实现简单的Ripple按钮实例代码
Mar 24 Javascript
详解JavaScript调用栈、尾递归和手动优化
Jun 03 Javascript
vue几个常用跨域处理方式介绍
Feb 07 Javascript
教你如何用node连接redis的示例代码
Jul 12 Javascript
Vue 实现手动刷新组件的方法
Feb 19 Javascript
vue treeselect获取当前选中项的label实例
Aug 31 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 is_executable判断给定文件名是否可执行实例
2016/09/26 PHP
PHP判断密码强度的方法详解
2017/05/26 PHP
thinkPHP框架实现的短信接口验证码功能示例
2018/06/20 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
js chrome浏览器判断代码
2010/03/28 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
2013/12/31 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
2015/01/02 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
2015/03/25 Javascript
JavaScript时间转换处理函数
2015/04/14 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
JavaScript 中有关数组对象的方法(详解)
2016/08/15 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
2017/01/14 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
vue3 源码解读之 time slicing的使用方法
2019/10/31 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
在Vue里如何把网页的数据导出到Excel的方法
2020/09/30 Javascript
[50:58]2018DOTA2亚洲邀请赛3月29日 小组赛A组OpTic VS Newbee
2018/03/30 DOTA
Python 随机生成中文验证码的实例代码
2013/03/20 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
Python字典推导式将cookie字符串转化为字典解析
2019/08/10 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
皇马官方商城:Real Madrid Store
2016/09/02 全球购物
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
Abbott Lyon官网:女士手表、珠宝及配件
2020/12/26 全球购物
副厂长岗位职责
2014/02/02 职场文书
《最大的“书”》教学反思
2014/02/14 职场文书
教职工代表大会主持词
2014/04/01 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
家属联谊会致辞
2015/07/31 职场文书