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 进阶篇3 Ajax 、JSON、 Prototype介绍
Mar 14 Javascript
JS实现QQ图片一闪一闪的效果小例子
Jul 31 Javascript
js、jquery图片动画、动态切换示例代码
Jun 03 Javascript
JavaScript中number转换成string介绍
Dec 31 Javascript
ES6中如何使用Set和WeakSet
Mar 10 Javascript
JavaScript程序中的流程控制语句用法总结
May 23 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
Jun 02 Javascript
巧用数组制作图片切换js代码
Nov 29 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
Dec 01 Javascript
浅谈js for循环输出i为同一值的问题
Mar 01 Javascript
浅谈JavaScript的innerWidth与innerHeight
Oct 12 Javascript
帝国cms首页列表页实现点赞功能
Oct 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
PHP中鲜为人知的10个函数
2014/02/28 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
PHP curl使用实例
2015/07/02 PHP
深入讲解PHP的对象注入(Object Injection)
2017/03/01 PHP
php分页查询mysql结果的base64处理方法示例
2017/05/18 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
JavaScript前端开发之实现二进制读写操作
2015/11/04 Javascript
angular使用post、get向后台传参的问题实例
2017/05/27 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
分析javascript原型及原型链
2018/03/18 Javascript
详解vue中的computed的this指向问题
2018/12/05 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
Python 不同对象比较大小示例探讨
2014/08/21 Python
VSCode下好用的Python插件及配置
2018/04/06 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
Python要如何实现列表排序的几种方法
2020/02/21 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
美国存储和组织商店:The Container Store
2017/08/16 全球购物
荷兰演唱会和体育比赛订票网站:viagogo荷兰
2018/04/08 全球购物
销售顾问的岗位职责
2013/11/13 职场文书
人事主管岗位职责
2014/01/30 职场文书
优秀体育委员自荐书
2014/01/31 职场文书
学习决心书
2014/03/11 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
首次购房证明
2015/06/19 职场文书