YUI学习笔记(1)(2)
作者:xujiwei 来源:HotHeart's BLOG 发布时间:2009-01-12 18:06:00
在处理 overrides 的最后,还修复了 IE 中不枚举与内部函数同名的函数的 bug,即例如 overrides 中包含了 toString 或 valueOf 的定义,但是这两个函数也是 Object 对象所具有的,在 IE 中使用 for(p in overrides) 就不会得到这两个函数,因此需要修复,这是 YAHOO.lang 中 _IEEnumFix 函数所做的工作。
if (overrides) {
for (var i in overrides) {
if (L.hasOwnProperty(overrides, i)) {
subc.prototype[ i ]=overrides[ i ];
}
}
L._IEEnumFix(subc.prototype, overrides);
}
_IEEnumFix 只是简单的判断当前浏览器是否为 IE,如果为 IE 则从一个已经定义的列表中获取在 IE 中枚举不到的函数名列表,逐一判断是否为源对象自身的属性并且与 Object 原型中的同名函数不一样,如果是则添加到目标对象。如果浏览器不是 IE 则 _IEEnumFix 直接就是一个空函数,直接不处理。
_IEEnumFix: (YAHOO.env.ua.ie) ? function(r, s) {
for (var i=0;i<ADD.length;i=i+1) {
var fname=ADD[ i ],f=s[fname];
if (L.isFunction(f) && f!=Object.prototype[fname]) {
r[fname]=f;
}
}
} : function(){},
3. YAHOO.lang.augmentObject(yahoo.js)
augmentObject 方法用来引入目标对象的属性,并且处理重写,通常用于合并配置对象与默认配置对象。
augmentObject 有三种调用方法,分别是:
augmentObject(result, source),一般情况下用些方法,从 source 引入 result 中没有的属性;
augmentObject(result, source, override),override 设置是否覆盖,如果是 true 的话,那么 source 中所有属性会覆盖 result 中已有的属性;
augmentObject(result, source, ovrride_name, ...),指定要覆盖属性的列表,source 参数后为要覆盖属性名称的列表,例如覆盖 result 中的 toString 和 valueOf,那么可以调用 augmentObject(result, source, "toString", "valueOf")来实现。
合并对象的最后同样调用了 _IEEnumFix 方法来修正 IE 中不枚举与内部属性同名属性的 bug。
augmentProto 与 augmentObject 功能基本相同,只不过后者是处理对象,而前者是处理函数的 prototype,它是通过使用两个参数的 prototype 来构造一个参数列表,传递给 augmentObject 对象来实现 augmentProto 的功能。
var a=[r.prototype,s.prototype];
for (var i=2;i<arguments.length;i=i+1) {
a.push(arguments[ i ]);
}
L.augmentObject.apply(this, a);
因为 augmentProto 是调用 augmentObject 来实现的,因此它的调用格式也是 augmentObject 一样,具体可以看看上面 augmentObject 的三种调用方法。
另外,YAHOO.lang.merge 方法也是通过调用 augmentObject 方法来实现对象的合并。
猜你喜欢
- 现在正在搞三层开发,用ASP和VB6.0,但是现在苦于没有找到合适的方法来调试自己写的DLL文件,效率相当低。 &n
- 如果使用注释的方法得当的话,为你的CSS文件添加注释可以在开发过程中给予你和其他人很大的帮助。最常见的是为CSS样式规则添加提示信息,不过使
- 上期回顾:亚马逊购物用户体验分析 (一)“查找内部”功能书是在亚马逊最常被购买的产品之一,所以毋庸置疑亚马逊的开发小组已经建立了一个关于“查
- 同MongoDB,Redis这样的NoSQL数据库的复制相比,MySQL复制显得相当复杂!概述首先主服务器把数据变化记录到主日志,然后从服务
- 数据库,网站运营的基础,网站生存的要素,不管是个人用户还是企业用户都非常依赖网站数据库的支持,然而很多别有用心的攻击者也同样非常&l
- 你有没有觉得你的CSS样式表文件过于臃肿?其实如果你注意并培养一些比较好的CSS书写习惯,我想你的CSS样式表过于”肥胖”的问题会得到很好的
- 在网站或软件的策划和设计过程中,我们经常听到这样的讨论:“这个功能设计得太重了”又或“我们希望能够处理得轻一些”。似乎轻设计是时下炙手可热的
- 加班时抽空弄的,javascript图片链接定时轮换,自适应图片大小,支持预载,进行了简单封装,方便调用。发现自己还是菜得很,一个简单效果被
- 代码如下: Function NumberSplit(num) Dim i,length length=Len(num) For i=1 T
- buffer:下载数据缓冲区,以字节为单位,缺省依赖操作系统 consistent:下载期间所涉及的数据保持read only,缺省为n d
- 数据库复制就是由两台服务器,主服务器和备份服务器,主服务器修改后,备份服务器自动修改,在以前的文章中已经做了详细的说明,这里就不在重复.使用
- MySQL GUI Tools是一套图形化桌面应用工具套装,可以用来管理MySQL服务器。该套装工具包含三个工具:MySQL Query B
- 有时候要用Javascript输常用的字符,比如每个页面都要有的脚注。这里提供一个转换脚本:将HTML自动转为JS代码<script&
- 第一步:建与mysql同构的oracle数据库实例,并更新数据。 1.期望将my
- 先说明一下,现在网上有一些功能很强大的动画类,如MOOFX之类,我为什么要写这三个动画函数?因为在写zDialog时需要且只需要用到透明度渐
- 首先你要明白24bit的bmp图片的基本信息:1像素占3个字节,头部占54个字节。好了,现在开始做验证码了,这里以4位验证码(大小为20(高
- 很简单,只需建立一个worksheet和Excel相关的信息就可以了具体代码见下:<%set xlApp =&nb
- 写过稍微大型一点 ASP 的人都知道,Session 这个对象真是好用,它可以用来记录使用者私有的资料变量,既安全又方便。但是你真的知道 S
- 我想大多数的人在编写ASP程序的时候,都碰到过类似的错误信息: Error Number -> 
- 锁是指在某组资源中,两个或两个以上的线程在执行过程中,在争夺某一资源时而造成互相等待的现象,若无外力的作用下,它们都将无法推进下去,死时就可