underscore源码解析1

  1. _.noop()
    不论传递给它的是什么参数,返回的都是undefined。

_.noop()
=> undefined

//函数如果没有return返回值的话,默认的就是返回undefined。
_.noop = function() {};
  1. _.random(min,max)
    返回一个min和max之间的随机整数。如果你只传递了一个参数,那么将返回0和这个参数之间的整数。

_.random(0,100);
=> 42

_.random = function(min,max) {
//如果只传了一个参数的话,就把max的值设置为这个参数,而min设为0
  if (max == null) {
    max = min;
    min = 0;
  }
  return min + Math.floor(Math.random() * (max - min + 1));
};

Math.random()方法返回大于0小于1的一个随机数。
Math.floor()方法执行向下舍入,即它总是将数值向下舍入为最接近的整数。

  1. _.now()
    一个优化的方式来获取一个当前时间的整数时间戳。可用于实现定时/动画功能。

_.now();
=> 1503801043810

_.now = Date.now || function() {
  return new Date().getTime();
}

Date.now是ES5提出来的方法,如果浏览器支持,就等于这个方法,表示调用这个方法时的日期和时间的毫秒数。
反之就使用new操作符和Date构造函数创建一个日期对象,在调用Date构造函数而不传递参数的情况下,新创建的对象自动获得当前的日期和时间,再调用getTime方法,返回表示日期的毫秒数。

  1. _.uniqueId([prefix])
    为需要的客户端模型或DOM元素生成一个全局唯一的id。如果prefix参数存在,id将附加给它。

.uniqueId('contact');
=> 'contact_1'

var idCounter = 0;
_.uniqueId = function(prefix) {
  var id = ++idCounter + '';
  return prefix ? prefix + id : id;
}
  1. noConflict
    放弃Underscore的控制变量“_”。返回Underscore对象的引用。

var underscore = _.noConflict();

//‘this’是指向_的,准确的说是内部的_
var root = this;
var previousUnderscore = root._;

_.noConflict = function() {
  root._ = previousUnderscore;
  return this;
};

拿上面的例子来说,就是把这个控制变量"_"返回给了underscore;就像是jquery的“$”符号noConflict以后调用就要用jQuery('div')一样的效果,避免全局变量冲突。

  1. _.identity(value)
    返回与传入参数相等的值。相当于数学里的:f(x) = x
    这个函数看似无用,但是在Underscore里被用作默认的迭代器iterator

var stooge = {name : 'moe'};
=> stooge === ._identity(stooge)
=> true

_.identity = function(value) {
  return value
}

就是把传入的参数返回

  1. .constant(value)
    创建一个函数,这个函数返回相同的值用来作为
    .constant的参数。

var stooge = {name: 'moe'};
stooge === _.constant(stooge)();
=> true

_.constant = function(value) {
  return function() {
    return value;
  }
}

返回一个函数,这个函数再返回这个传入的参数。(返回一个能返回参数本身的函数)

  1. _.isUndefined(value)
    如果value是undefined,返回true。

_.isUndefined(window.missingVariable);
=> true

_.isUndefined = function(obj) {
  return obj ===void 0;
}

学习参考http://www.qdfuns.com/house/17398/note/class/id/bb6dc3cabae6651b94f69bbd562ff370/page/2.html
https://github.com/hanzichi/underscore-analysis/blob/master/underscore-1.8.3.js/underscore-1.8.3-analysis.js
http://www.css88.com/doc/underscore/#isEmpty
http://www.css88.com/doc/underscore/docs/underscore.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容

  • Underscore是一个 JavaScript 工具库,它提供了一整套函数式编程的实用功能,但是没有扩展任何 J...
    biorz阅读 236评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,531评论 18 399
  • 有人说过,很多弯路到最后都成了直路,所有的坑到最后也都成了坦途;所谓的直路和坦途并不是摆在眼前的,都是不断的的...
    老衲法号一眉道人阅读 1,310评论 0 4
  • 这几年鸡汤盛行,品种繁琐,极为齐全,而且深受广大吃瓜群众喜爱,说到鸡汤,之所以被人们喜欢,是因为它的功效十分好用,...
    你是我的未完待续阅读 401评论 0 0
  • 那天,阳光刚好,风刚好,人也刚好,但愿,一切都刚刚好…… ❤️一: 排在队伍里的舒苒,心里默默数着...
    麥芽餹阅读 263评论 0 1