vue源码中的检测方法的实现

判断是否为undefined或null

const isDef = (v) => {
 return v !== undefined && v !== null
}

判断是否为Promise 函数

const isPromise = (val) => {
 return (
  val !== undefine &&
  typeof val.then === \'function\' &&
  typeof val.catch === \'function\'
 )
}

判断是否为简单数据类型

const isPrimitive (value) => {
 return (
  typeof value === \'string\' ||
  typeof value === \'number\' ||
  typeof value === \'symbol\' ||
  typeof value === \'boolean\'
 )
}

严格检查复杂数据类型

const isPlainObject = (obj) => {
 return Object.prototype.toString.call(obj) === \'[object Object]\'
}

const isRegExp = (v) => {
 return Object.prototype.toString.call(v) === \'[object RegExp]\'
}

将驼峰字符串转成连接符 magicEightTall 转换成 magic-eight-tall

const hyphenateRE = /\\B([A-Z])/g
const hyphenate = (str) => {
 return str.replace(hyphenateRE, \'-$1\').toLowerCase()
}

将连接符转成驼峰字符串 magic-eight-tall 转换成 magicEightTall

const camelizeRE = /-(\\w)/g
const camelize = (str) => {
  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \'\')
}

如果不想重复转换,可用以下方法调用转换函数

const cached = (fn) => {
  const cache = Object.create(null)
  console.log(cache);
  return ((str) => {
   const hit = cache[str]
   return hit || (cache[str] = fn(str))
  })
};

const camelize = cached((str) => {
  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \'\')
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容