YUI学习总结(2)

来源:互联网 发布:java.util.properties 编辑:程序博客网 时间:2024/05/04 15:33

版权声明 未作特别说明的内容可以转载,转载时请务必以超链接形式标明文章 原始出处 和作者信息及本声明。本文地址http://blog.csdn.net/xujiaxuliang/archive/2009/10/21/4708353.aspx    

1. YAHOO.lang.merge()

 用于合并函数参数列表中的所有对象的属性/方法,如果有相同属性/方法则后面的覆盖前面的,并返回拥有合并后属性/方法的对象。

 源代码实现也是调用了YAHOO.lang.augmentObject函数来实现功能,如下:

 2. YAHOO.lang.dump()

实现将一个参数值根据其类型转化为一个字符串,并且可选的指定转储的深度。一般用来输出查看值的类型和内容。

在 dump 过程中:

对于基础类型例如 Number、String、Boolean,是直接返回字符串的,

对 HTMLElement 对象是返回 HTMLElement 本身,也就是不做处理,

对于函数 Function 则是返回字符串“f(){...}”。

对于数组,dump 返回的格式就如我们定义时一样“[item1, item2 item3, ...]”,此时可以设置深度。

对于对象 Object,则是使用键值对的形式“key => value”

3.YAHOO.lang.substitute():

用来返回一个被格式化的字符串。该函数在我推荐的http://www.xujiwei.com/blog/?id=892   文章中已解释的很清楚了。我也是看了他的解释后,再看源代码才真正了解该函数的用法含义的。

4.YAHOO.lang.trim():

 用于字符串参数中的前后空白字符(whitespace)。如果参数不是字符串则原样返回。

 实现代码主要利用正则表示式:s.replace(/^/s+|/s+$/g, "");

 5.YAHOO.lang.later():

该函数实现了对setTimeoutsetInterval 的封装。

声明为: later: function(when, o, fn, data, periodic)。 periodictrue时,相当于执行setInterval,反之为setTimeout。 另四个参数分别为时间,并毫秒计算;,调用对象,转送给回调函数的参数列表和回调函数。(其中data为数组类型,即使只有一个参数也要自己写成[arg1] )

函数返回封装的定时器对象, 如果调用其call方法,可取消执行回调函数。

 6.YAHOO.lang.toValue():

用来判断是否是有意义的值,如果为null/undefined/NaN,则返回false,其他任何参数值都返回true。

源代码:

 

7.YAHOO.lang.hasOwnProperty():

 

用来判断属性是否是对象的本地属性。如果没有该属性或是_proto_的继承属性则返回false。该函数扩展了某些浏览器的内核没有Object.prototype.hasOwnproperty的缺点。

代码实现:

 

 

  

Ps:从实现代码可以看出,如果对象的_proto_的属性被重写,且值是相同时。该函数会返回false。而Object.prototype.hasOwnproperty会返回true

8. 浏览器版本号的检测:YAHOO.env.ua

 

目前为止,检测浏览器与版本主要有两大主流的做法。其一,就是分析浏览器提供的 user-agent 字符串;其二,就是根据其功能判别。YUI 使用第一种判断方式,也就是分析 user-agent 字符串。

能避免的话就避免检测浏览器信息。尽量使用特征检测。除非万不得已才使用浏览器检测。YAHOO.env存储了所有浏览器引擎的版本号,默认都是0。

但下面的浏览器的判断可以用: