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 相关文章推荐
Prototype 学习 Prototype对象
Jul 12 Javascript
JavaScript学习笔记之获取当前目录的实现代码
Dec 14 Javascript
JavaScript Math.ceil() 函数使用介绍
Dec 11 Javascript
网页运行时提示对象不支持abigimage属性或方法
Aug 10 Javascript
laytpl 精致巧妙的JavaScript模板引擎
Aug 29 Javascript
JavaScript极简入门教程(一):基础篇
Oct 25 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
Dec 25 Javascript
浅谈javascript 函数表达式和函数声明的区别
Jan 05 Javascript
Bootstrap select下拉联动(jQuery cxselect)
Jan 04 Javascript
Vue实现带进度条的文件拖动上传功能
Feb 23 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
Apr 23 Javascript
vue动态注册组件实例代码详解
May 30 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
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
2014/04/10 PHP
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
php自定义排序uasort函数示例【二维数组按指定键值排序】
2019/06/19 PHP
用Javascript评估用户输入密码的强度(Knockout版)
2011/11/30 Javascript
再谈querySelector和querySelectorAll的区别与联系
2012/04/20 Javascript
js制作简易年历完整实例
2015/01/28 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
2016/11/09 Javascript
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
iview在vue-cli3如何按需加载的方法
2018/10/31 Javascript
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
python使用chardet判断字符串编码的方法
2015/03/13 Python
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
详解python调用cmd命令三种方法
2019/07/08 Python
解决Python中pandas读取*.csv文件出现编码问题
2019/07/12 Python
PyQt Qt Designer工具的布局管理详解
2019/08/07 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
Python计算IV值的示例讲解
2020/02/28 Python
Python用access判断文件是否被占用的实例方法
2020/12/17 Python
CSS3实现文字描边的2种方法(小结)
2020/02/14 HTML / CSS
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
医学护理系毕业生求职信
2013/10/01 职场文书
跟单文员的岗位职责
2013/11/14 职场文书
店长岗位职责
2013/11/21 职场文书
全民健身日活动方案
2014/01/29 职场文书
大班幼儿评语大全
2014/04/30 职场文书
初一英语教学反思
2016/02/15 职场文书
欧元符号 €
2022/02/17 杂记
使用pd.merge表连接出现多余行的问题解决
2022/06/16 Python