「我正在参与掘金会员专属活动-源码共读第一期,点击参与」
本篇文章介绍的是
Vue.js的工具函数(2.x的版本)
相信大家在自己的项目也有封装工具函数,通常写在utils.js里。通常有转换的函数(toXXX()),做判断的函数(比如isXXX()), 做处理的函数(比如makeXXX()),是否含有的函数(比如:hasXXX()),还有做其他事情的各种的函数,还有一些函数是为了工具函数做铺垫的,为了工具函数而生。这些逻辑比较通用,所以我们都归在一起,统一叫工具函数。
按照上述划分的类型顺序,我们依次来看看Vue.js的工具函数。
toXXX()
toRawType
转换原始类型的函数
toString和toNumber
转换字符串,转换为数字的函数。
function toString (val) {
return val == null
? ''
: Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)
? JSON.stringify(val, null, 2)
: String(val)
}
function toNumber (val) {
var n = parseFloat(val);
return isNaN(n) ? val : n
}
isXXX()
做判断的函数就很多,比如判断环境:生产还是开发环境,判断变量类型,判断浏览器环境。
isUndef和isDef
判断是否未定义:undefined和null都认为是未定义,isDef取返。
isTrue和isFalse
判断是真值还是假值。
isPrimitive
判断是否是原始类型。
function isPrimitive (value) {
return (
typeof value === 'string' ||
typeof value === 'number' ||
// $flow-disable-line
typeof value === 'symbol' ||
typeof value === 'boolean'
)
}
isObject等判断类型的函数
判断是否是对象
function isObject (obj) {
return obj !== null && typeof obj === 'object'
}
makeXXX()
makeMap
makeMap:返回一个函数判断是否在,检查key是否在map里.
hasXXX()
hasOwnProperty
hasOwnProperty:是否含有某个自有属性
genXXX()
genStaticKeys: 为编译模块生成静态keys
其他
其他类的是一些见名知义的工具函数
remove:移除数组中的元素cached:将函数缓存起来extend:浅复制对象;noop: 啥也不干的函数no: 永远返回false的函数identity: 返回相同的值once:只执行一次looseEqual:判断两个值是否相同类型
结束语
看到了这么多的工具函数,有些可以用到自己的项目里,比如判断浏览器环境的,是否是IE,判断是否是服务端渲染的。我们需要什么就可以直接借鉴。