前言
这一篇源码分析中,我们会试着去看
underscore
几个比较常见的函数
_.random
返回一个min 和 max之间的随机整数。如果你只传递一个参数,那么将返回0和这个参数之间的
整数
。取值范围是[min, max],注意是闭区间
|
|
这个函数参数可以传进去两个或者一个,当为一个的时候,返回的是[0, max] 之间的一个整数,平实需要得到一个指定范围的数字的时候,比较常用。
_.noConflict
放弃Underscore 的控制变量”_”。返回Underscore 对象的引用。也就是为了防止冲突而做的处理。
|
|
代码非常简单,就是把原来的全局变量_给赋值回去,而将underscore的引用作为函数调用后的返回值,提供给调用方使用。这是一种非常经典的防止全局冲突的方法。
举个例子我们要写一个平实自己经常要用到的工具类,取的名字是$,当然假设之前,我们并不知道jQuery中也用了这个名字,那么在实际项目中为了防止自己写的这个工具库把全局的美元符号给污染掉,怎么办呢?
|
|
_.noop
返回undefined,不论传递给它的是什么参数。 可以用作默认可选的回调参数。
|
|
underscore帮我们提供一个空函数,这个有啥用呢? 其实还真有用处,平实如果我们要初始化某个变量为空函数,方便后面再把这个变量对应的值替换掉。又或者甚至用作判断一个变量是否是undefined。
|
|
很显然这样可以有两个好处,
- 因为在ie低版本中undefined的值可能被改写,所以导致判断不准确。但是如果直接于
_.noop()
相比较就不会有这个问题 - 直接给浏览器省了创建两个空函数的麻烦
_.now
一个优化的方式来获得一个当前时间的整数时间戳。可用于实现定时/动画功能。
|
|
如果当前的浏览器提供的Date对象中含有now函数就用直接提供的,否则就用自己实现的。平常如果需要生成唯一的id,可以用到这个函数。
_.identity
返回与传入参数相等的值,这个函数看似无用, 但是在Underscore里被用作默认的迭代器iterator.
|
|
函数非常简单就是你传进来什么东西就返还给你什么东西。
_.constant
创建一个函数,这个函数返回传入的值 。
|
|
_.uniqueId
为需要的客户端模型或DOM元素生成一个全局唯一的id。如果prefix参数存在, id 将附加在其后面。
|
|
结语
万事开头难,啥复杂难的事都是从简单容易的事情开始做的,这篇博文主要讲了几个
underscore
中非常简单的api。接下来会慢慢接触一些比较难的,又非常重要的api。