版权声明 :未作特别说明的内容可以转载,转载时请务必以超链接形式标明文章 原始出处 和作者信息及本声明。本文地址 : http://blog.youkuaiyun.com/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():
该函数实现了对setTimeout 和 setInterval 的封装。
声明为: later: function(when, o, fn, data, periodic)。 当periodic为true时,相当于执行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。
但下面的浏览器的判断可以用: