YUI 研究 -- YAHOO 模块
2008-03-26 22:00
316 查看
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方法把定时器干掉。
相关文章推荐
- Yahoo! User Interface Library,YUI,YUI下载,YUI学习,YUI是什么,YUI浅谈,YUI研究(1)
- YUI 研究 -- Event 模块
- Yahoo! User Interface Library,YUI,YUI下载,YUI学习,YUI是什么,YUI浅谈,YUI研究(1)
- YUI 研究 -- Animation 模块
- Yahoo! User Interface Library,YUI,YUI下载,YUI学习,YUI是什么,YUI浅谈,YUI研究(2)
- YUI 研究 -- Dom 模块
- 高性能Web服务器Nginx的配置与部署研究(9)核心模块之HTTP模块基本常用指令
- 高性能Web服务器Nginx的配置与部署研究(12)应用模块之Memcached做文件缓存时压缩引起的问题
- 网站访问统计模块研究
- Android系统Download模块研究
- PetShop 4.0 设计研究——petShop 4.0 的命名空间 以及各个项目模块的说明
- [yui]Yahoo!User Interface Libray 介绍
- 智能卡COS芯片层模块设计与测试方案研究
- 高性能Web服务器Nginx的配置与部署研究(7)核心模块之主模块的非测试常用指令
- 【转】Android ROM研究---Android build system增加模块
- Yahoo! UI Library: YUI Compressor for .Net
- 研究一下javascript的模块规范(CommonJs/AMD/CMD)
- 使用javascripte 动态加载模块研究
- python logging模块的研究
- JPDA 架构研究20 - JDI的事件请求和处理模块 推荐