A modern JavaScript utility library delivering modularity, performance & extras.
是一个一致性、模块化、高性能的 JavaScript 实用工具库。
借网上的一个总结, Lodash 提供的函数主要分为以下几类:
- Array,适用于数组类型,比如填充数据、查找元素、数组分片等操作
- Collection,适用于数组和对象类型,部分适用于字符串,比如分组、查找、过滤等操作
- Function,适用于函数类型,比如节流、延迟、缓存、设置钩子等操作
- Lang,普遍适用于各种类型,常用于执行类型判断和类型转换
- Math,适用于数值类型,常用于执行数学运算
- Number,适用于生成随机数,比较数值与数值区间的关系
- Object,适用于对象类型,常用于对象的创建、扩展、类型转换、检索、集合等操作
- Seq,常用于创建链式调用,提高执行性能(惰性计算)
- String,适用于字符串类型
Lodash.isArguments
判断是否是一个 arguments 对象, arguments 也就是函数参数对象, 是数组的一种鸭子类型
, 该对象有两个特点, 一就是 typeof
操作符会返回 object
并且有 callee
属性,lodash 中作了以下几个处理
- isObjectLike 像是一个对象
- 是否有 callee 属性
- 并且判断 callee 不可枚举
function _isArguments(value) {
return value != null && typeof value == 'object' &&
value.hasOwnProperty('callee') &&
!value.propertyIsEnumerable('callee');
}
Lodash.isFunction
判断是否是一个函数,其中 lodash 对 AsyncFunction
,Function
,GeneratorFunction
三种函数都作了判断
function* gen1(){
}
async function getData(){
}
function bar () {
}
console.log(({
}).toString.call(gen1) ) // [object GeneratorFunction]
console.log(({
}).toString.call(getData) ) // [object AsyncFunction]
console.log(({
}).toString.call(bar) ) // [object Function]
Lodash.isObject
lodash 将非 null 值,普通对象和函数都当作对象,而isObjectLike
只是除开了函数
function _isObject(value) {
var type = typeof value;
return value != null && (type == 'object' || type == 'function');
}
console.log(typeof null