underscore
newway007
这个作者很懒,什么都没留下…
展开
-
underscore中抽样函数以及数组打乱排序实现
//抽样函数 10 11 _.sample = function(array, n){ if(n == null){ return array[_.random(array.length-1)];//输出一个值; } var sample = _.clone(array); var length = sample.length; ...原创 2019-10-16 16:45:14 · 185 阅读 · 0 评论 -
underscore中indexof实现
index里面有一个有趣的点: 查找值NaN的情形 //_.findIndex 特殊情况下的处理方案 NAN //_.sortedIndex 针对排序的数组做二分查找 优化性能 _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex); _.lastIndexOf = createIndexFinder(...原创 2019-10-16 15:58:06 · 242 阅读 · 0 评论 -
reduce实现
var createReduce = function(dir) { //累加 var reduce = function(obj, iteratee, memo, init) { var keys = !_.isArray(obj) && Object.keys(obj),//对象 length = (keys || obj).length,//对象或者...原创 2019-10-16 11:35:18 · 256 阅读 · 0 评论 -
rest参数实现
// rest 参数 _.restArguments = function(func) { //函数参数的个数。。。 var startIndex = func.length - 1; //func.length是func参数个数;-1是前面非rest参数成员个数; return function() { var length = arguments.leng...原创 2019-10-16 10:25:41 · 213 阅读 · 0 评论 -
underscore中的map怎么实现
上一篇文章中使用了map函数作为例子介绍了underscore是怎么实现链式调用的。 这里具体讲讲map内部结构。 _.map = function(obj, iteratee, context) { //生成不同功能迭代器 var iteratee = cb(iteratee, context); //分辨 obj是数组对象, 还是object对象 var keys = ...原创 2019-10-16 10:07:18 · 306 阅读 · 0 评论 -
underscore怎么实现链式调用
之前看jquery,它的链式调用是通过return this(返回对象本身)来实现。 underscore怎么实现链接式调用? //开启链接式的调用 _.chain = function(obj) { var instance = _(obj); instance._chain = true; re...原创 2019-10-16 09:06:10 · 166 阅读 · 0 评论 -
callbacks源码
(function (root) { var optionsCache = {}; var _ = { callbacks: function (options) { options = typeof options === "string" ? (optionsCache[options] || createOptions(options...原创 2019-10-14 20:00:42 · 92 阅读 · 0 评论