dess中一个简单的多路委托的实现


Posted in Javascript onJuly 20, 2010
var SDelegate = function(f, b, c) { 
if (b) { 
this.asFunction_ = function() { 
return f.apply(b, arguments); 
} 
} else { 
this.asFunction_ = function() { 
return f.apply(this, arguments); 
} 
} 
this.method_ = f; 
this.binding_ = b; 
this.continus = c; 
} 
SDelegate.composite = function(d) { 
if (d.continus) { 
var con = d.continus.composited_ = SDelegate.composite(d.continus); 
var method = d.asFunction_; 
return function() { 
con.apply(this, arguments); 
return method.apply(this, arguments); 
} 
} else { 
return d.asFunction_; 
} 
} 
SDelegate.prototype.call = function() { 
if (!this.composited_) this.composited_ = SDelegate.composite(this); 
return this.composited_.apply(arguments[0], Array.prototype.slice.call(arguments, 1)); 
} 
SDelegate.prototype.remove = function() { 
var removeP = function(parent, item, test, data) { 
if (!item) return; 
parent.composited_ = item.composited_ = null; 
if (test(item, data)) { 
parent.continus = item.continus; 
removeP(parent, item.continus, test, data); 
} else { 
removeP(item, item.continus, test, data); 
} 
}; 
return function(test, data) { 
var p = this; 
if (test(this, data)) { 
p = this.continus; 
} 
removeP(p, p.continus, test, data); 
p.composited_ = null; 
return p; 
} 
}(); 
SDelegate.prototype.append = function(f, b) { 
return new SDelegate(f, b, this); 
}

这个SDelegate用起来可能会比较诡异,比如很多操作都要重新赋值。Dess中,SDelegate主要用于一些特定场合,如DOM事件派发。
Javascript 相关文章推荐
走出JavaScript初学困境—js初学
Dec 29 Javascript
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
Mar 17 Javascript
JavaScript初学者需要了解10个小技巧
Aug 25 Javascript
jquery任意位置浮动固定层插件用法实例
May 29 Javascript
js实现继承的5种方式
Dec 01 Javascript
Javascript动画效果(3)
Oct 11 Javascript
探究Vue.js 2.0新增的虚拟DOM
Oct 20 Javascript
js时间控件只显示年月
Jan 08 Javascript
Vue.js 单页面多路由区域操作的实例详解
Jul 17 Javascript
JavaScript使用FileReader实现图片上传预览效果
Mar 27 Javascript
详解Vue2 添加对scss的支持
Jan 02 Javascript
关于JavaScript 中 if包含逗号表达式
Nov 27 Javascript
js 返回时间戳所对应的具体时间
Jul 20 #Javascript
javascript 数据类型转换(parseInt,parseFloat)
Jul 20 #Javascript
轻量级 JS ToolTip提示效果
Jul 20 #Javascript
javascript动画之圆形运动,环绕鼠标运动作小球
Jul 20 #Javascript
根据出生日期自动取得星座的js代码
Jul 20 #Javascript
firefox火狐浏览器与与ie兼容的2个问题总结
Jul 20 #Javascript
Javascript实现CheckBox的全选与取消全选的代码
Jul 20 #Javascript
You might like
PHP编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
javascript编程起步(第四课)
2007/01/10 Javascript
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
intro.js 页面引导简单用法 分享
2013/08/06 Javascript
JavaScript数组前面插入元素的方法
2015/04/06 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
JavaScript时间操作之年月日星期级联操作
2016/01/15 Javascript
谈一谈bootstrap响应式布局
2016/05/23 Javascript
JavaScript中获取时间的函数集
2016/08/16 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
js的函数的按值传递参数(实例讲解)
2017/11/16 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
python在linux中输出带颜色的文字的方法
2014/06/19 Python
python实现根据图标提取分类应用程序实例
2014/09/28 Python
python编写暴力破解FTP密码小工具
2014/11/19 Python
python数据分析数据标准化及离散化详解
2018/02/26 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
新闻系毕业生推荐信
2013/11/16 职场文书
普通院校学生的自荐信
2013/11/27 职场文书
眼镜促销方案
2014/03/15 职场文书
开工仪式主持词
2014/03/20 职场文书
施工安全责任书
2014/04/14 职场文书
学生偷窃检讨书
2014/09/25 职场文书
绿里奇迹观后感
2015/06/15 职场文书
总结Python常用的魔法方法
2021/05/25 Python