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 方法来实现对象的合并。


猜你喜欢
- 一、新建一个用户老板:给我新建一个用户joytom,密码设置为123321,并任意远程主机都能访问,五分钟完成,实现不了就给我提桶走人!小王
- 前言在C语言中,由于变量一定是先声明,后使用,所以我们可以清楚的知道,现在使用的变量是全局还是局部,比如:int a = 5; void t
- 在标准的dgango项目中,自动生成的目录结构会包括models.py和views.py两个文件,分别在里面写model的代码和contro
- # -*- coding: utf-8 -*-import pymysqlimport xlrd# import codecs#连接数据库c
- 命名空间: 每一个作用域变量存储的位置,或者解释为 存储作用域中变量的字典。作用: 获取想查看某个作用域中的变量名、变量值。使用方法: lo
- 一、计数排序计数排序(Counting sort)是一种稳定的排序算法算法的步骤如下:找出待排序的数组中最大和最小的元素统计数组中每个值为i
- 通过go语言实现http请求http.Postimport (?? ?"net/http"?? ?"net/u
- 因为公司需要在原有的web开发上,实现3d效果。根据需求正在学习webgl,主攻cesium这一块,采用的工具是webstorm.但是使用一
- 1. 获取abi文件合约的接口在remix工具中编译合约后,会有一个abi,复制然后新建一个xx.abi文件,把赋值的粘贴到里面注意:代码变
- 本文实例展示了PHP实现的格鲁斯卡尔算法(kruscal)的实现方法,分享给大家供大家参考。相信对于大家的PHP程序设计有一定的借鉴价值。具
- pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。但目前pymysql支持python3.x而后者不支持
- Socket服务器是网络服务中常用的服务器。使用go语言实现这个业务场景是很容易的。这样的网络通讯,需要一个服务端和至少一个客户端。我们计划
- 直接update的弊端最近做一个需求,更新3w条数据,一个一个update去更新的,结果花了80分钟,这样性能上很差,也容易阻塞,所以就找了
- ASP.net与SQLite数据库通过js和ashx交互(连接和操作):废话(也是思路):用的是VS2010,打算做网站前后台。由于不喜欢前
- 怀旧滤镜实现原理不管是荣耀华为手机还是其他的手机,我们都可以找到相机中的怀旧效果,这是手机中常用的一种滤镜效果。怀旧风格的设计主要是在图像的
- 第一种打开PyCharm, 然后PyCharm -> Preferences -> 在搜索框中输入Project Interpr
- 对于一个多维数组(以二维数组为例),经常需要获取到其中的一列,比如有几条用户数据,是一个二维数组,现在需要获取到这几个用户的名字,可以有多种
- 本文实例为大家分享了JSP实现客户信息管理系统的具体代码,供大家参考,具体内容如下项目示意图大概这样吧。我自己画的 登录界面代码index.
- 对dataframe绘图并保存:ax = df.plot() fig = ax.get_figure()fig.savefig('f
- 区块链中的共识算法在比特币公链架构解析中,就曾提到过为了实现去中介化的设计,比特币设计了一套共识协议,并通过此协议来保证系统的稳定性和防攻击