品Vue.js2.x工具函数

202 阅读2分钟

「我正在参与掘金会员专属活动-源码共读第一期,点击参与

本篇文章介绍的是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

判断是否未定义:undefinednull都认为是未定义,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,判断是否是服务端渲染的。我们需要什么就可以直接借鉴。