JavaScript中的undescore

  • JavaScript学习过程中的个人笔记,详细请看https://www.liaoxuefeng.com/wiki/1022910821149312
  • 再次感谢廖大
    ===================================================================================
  • 如同jQuery统一了不同浏览器之间DOM操作的差异,让我们可以简单地对DOM进行操作,underscore则提供了一套完善的函数式编程的接口,让我们更方便地在JavaScript中实现函数式编程。
  • unserscore在加载的时候将自身绑定到唯一的全局变量_上。
collections
  • underscore为集合类对象提供了一致的接口。集合类是指Array和Object,暂不支持Map和Set。
  • _.map/filter可以作用于Object,传入的函数为function(value,key),第一个参数接收value,第二个参数接收key,返回结果是Array。当使用_.mapObject时,返回结果是Object。
  • _.every:当集合的所有元素都满足条件时,返回true。
  • _.some():当集合中至少一个元素满足条件时,返回ture。
  • _.every()/some()的集合是Object时,我们可以同时获得value和key。
  • _.man()/min():直接返回集合中最大和最小的数,当集合是object时,函数只作用于value,忽略key。
  • _.groupBy:把集合的元素按照key归类,key由传入的函数返回。
  • _.shuffle():用洗牌算法随机打乱一个集合。
  • _.sample():随机选择一个或多个元素。
    ####### Arrays
  • underscore为Array提供了许多工具类方法。
  • _.first()/last():取第一个和最后一个元素。
  • _.flatten():接收一个Array,这个Array可嵌套多个Array,最后将返回一个一维数组。
  • _.zip()/unzip():zip()把两个或多个数组的元素按索引对齐,然后按索引合并成新数组。unzip()则是反过来。
  • _.object():类似zip()函数,但返回一个object。
Objects
  • keys/allkeys:返回一个object自身所有的key,但不包括从原型链继承下来的。allkeys()包括从原型链继承下来的
  • values:返回object自身但不包括原型链继承的所有值。没有allvalues()
  • mapObject:针对object的map版本。
  • invert:把object的每一个key-value进行交换。
  • extend:把多个object的key-value合并到第一个object并返回。如果有相同的key,后面的value将覆盖前面的。
  • extendOwn:同上,但获取属性时忽略从原型链继承下来的属性。
  • clone:赋值对象,浅复制,两个对象相同的key引用的value其实是同一对象
  • isEqual:对两个object进行深度比较,如果完全相同,则返回true。对Array也适用。
Chaining(链式调用)
  • underscore提供了把对象包装成能进行链式调用的方法,就是chain()
	var r = _.chain([1,4,9,16,25])
			 .map(Math.squrt)
			 .filter(x => x % 2 ===1)
			 .value();
    等价于
    _filter(_.map([1, 4, 9, 16, 25], Math.sqrt), x => x % 2 === 1 );
Functions
  • underscore提供了大量JavaScript没有的高阶函数
  • bind():将一个对象绑定到一个变量的this指针上。
  • partial():创建偏函数。用来将原函数的某些参数固定住,可以降低新函数调用的难度。可以用_作占位符来固定第二个参数。
  • memoize():可以自动缓存函数计算的结果,第二次调用同参数函数的时候将直接使用缓存结果。
  • once():保证某个函数执行且只能执行一次。
  • delay():可以让一个函数延迟执行,效果和setTimeout()一样。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值