YUI 研究 -- YAHOO 模块

 
YAHOO 全局命名空间,是所有命名空间的根

YAHOO.namespace(args...)
创建命名空间
命名空间以空对象的形式存在,此函数解决了同名空间覆盖导致的信息丢失问题;
可以传多个参数,YAHOO.namespace("lgz.test", "lgz.work");
函数返回最后被创建的空对象;
为YAHOO起个别名,var lgz = YAHOO,就可以有不以YAHOO为根的命名空间。

YAHOO.log 写入日志

YAHOO.register(name, mainClass, data) 用于注册模块信息

构造版本信息并加入到YAHOO.env.modules中;
在mainClass中加入VERSION和BUILD两个属性,可用于获取当前使用的模块的版本信息;
每次模块加载调用register时,YAHOO.env.listeners中的每个方法会被调用一次,以版本信息作为参数。

YAHOO.env 用于跟踪YUI库和客户端环境信息
创建了三个保留命名空间:YAHOO.namespace("util", "widget", "example");
把YAHOO_config中的listener加入到YAHOO.env.listeners中。

YAHOO.env.getVersion(name) 返回制定模块的版本信息

YAHOO.env.ua 客户端信息
保存了浏览器引擎的版本号,0值除外。此为单例对象。
YAHOO.env.ua.ie -- IE
YAHOO.env.ua.gecko -- Firefox
YAHOO.env.ua.opera -- Opera
YAHOO.env.ua.webkit -- Safari Webkit

YAHOO.env.ua.mobile -- 字符串,存放移动设备的版本信息
目前能检测iPod和iPhone上的Safari,Nokia N-series上的基于Webkit的浏览器和Opera Mini。

YAHOO.lang
YAHOO.util.Lang 语言工具

YAHOO.lang.isXXX 类型判断函数
包括isArray、isBoolean、isFunction、isNull、isNumber、isObject、isString、isValue和isUndefined九个。

YAHOO.lang.hasOwnProperty(o, prop) 
判断一个属性是否被加到对象上,从prototype上继承的不算。

_IEEnumFix
IE不会遍历派生对象中的原生函数,即使这些函数已被覆盖了。此函数用于修正这个问题,但修正对象只是Object的prototype中toString和valueOf两个函数。

YAHOO.lang.extend(subc, superc, overrides)
YAHOO.extend(subc, superc, overrides) 继承
extend: function(subc, superc, overrides) {
      ......
      var F = function(){};
      F.prototype = superc.prototype; // 制造一份父类原型的拷贝
      subc.prototype = new F(); // 以父类原型的一份拷贝作为子类的原型,避免了子类在其原型中添加方法时对父类行为的影响。
      subc.prototype.constructor = subc; // 把自身的构造方法保存在原型中,供子类通过superclass属性调用。
      subc.superclass = superc.prototype;
      if (superc.prototype.constructor == Object.prototype.constructor) {
           superc.prototype.constructor = superc; // 如果父类原型没有设置constructor属性,就帮它设置。
      }
      ......
}
在调用extend前不要对子类的prototype进行修改,因为extend中会为子类创建新的prototype,这会导致修改丢失;
可以使用instanceof来判断继承关系。能使用superclass属性调用父类。能调用父类的constructor;
 
YAHOO.lang.augmentObject(r, s) 对象属性复制
YAHOO.lang.augmentProto(r, s)
YAHOO.lang.augment(r, s)
YAHOO.augment(r, s) prototype属性复制
如果第三个参数!==true,则r中已有的成员不会被覆盖;
如果从第三个参数开始是多个字符串,则只会从s拷贝这些字符串指定的成员到r。

YAHOO.lang.dump(obj, depth) 返回对象或数组的字符串表示
 
YAHOO.lang.substitute(s, o, f) 用对象值替换字符串中的符号
用o["example"]替换s中{example}的值;
大括号中可以带参数,表示dump的深度。当o["example"]为Array时,{example 10};当o["example"]为非数组Object时,{example dump 5};
不能解释的符号会被保留;
如果出现{},函数立刻返回。

YAHOO.lang.trim 去除前后空格

YAHOO.lang.merge(...) 合并多个对象的成员

YAHOO.lang.later(when, o, fn, data, periodic) 定时函数的一个封装
fn如果为String的话fn会被重新设置为o[fn];
其返回返回对象能调用cancle方法把定时器干掉。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值