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


Posted in Javascript onSeptember 26, 2019

判断是否为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() : '')
})

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

Javascript 相关文章推荐
发现的以前不知道的函数
Sep 19 Javascript
提示$ is not defined错误分析及解决
Apr 09 Javascript
extjs两个tbar问题探讨
Aug 08 Javascript
jquery 合并内容相同的单元格(示例代码)
Dec 13 Javascript
js判断字符是否是汉字的两种方法小结
Jan 03 Javascript
javascript里使用php代码实例
Dec 13 Javascript
js实现iframe自动自适应高度的方法
Feb 17 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
Jun 09 Javascript
AngularJs IE Compatibility 兼容老版本IE
Sep 01 Javascript
AngularJS学习第二篇 AngularJS依赖注入
Feb 13 Javascript
React全家桶环境搭建过程详解
May 18 Javascript
前端天气插件tpwidget使用方法详解
Jun 24 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
Sep 26 #Javascript
layer.open 子页面弹出层向父页面传输数据的例子
Sep 26 #Javascript
Vue项目环境搭建详细总结
Sep 26 #Javascript
layer.open 获取不到表单信息的解决方法
Sep 26 #Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
Sep 26 #Javascript
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
Sep 26 #Javascript
对Layer弹窗使用及返回数据接收的实例详解
Sep 26 #Javascript
You might like
对象失去焦点时自己动提交数据的实现代码
2012/11/06 PHP
php中文验证码实现示例分享
2014/01/12 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
php 可变函数使用小结
2018/06/12 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
javascript事件模型代码
2007/07/01 Javascript
javascript 动态参数判空操作
2008/12/22 Javascript
JS去除数组重复值的五种不同方法
2013/09/06 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
微信小程序 页面跳转和数据传递实例详解
2017/01/19 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
2017/11/17 Javascript
Node错误处理笔记之挖坑系列教程
2018/06/05 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
Vue+Element实现表格编辑、删除、以及新增行的最优方法
2019/05/28 Javascript
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
美国性感内衣店:Yandy
2018/06/12 全球购物
英国最大的在线亚洲杂货店:Red Rickshaw
2020/03/22 全球购物
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
数据库面试要点基本概念
2013/10/31 面试题
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
建筑毕业生自我鉴定
2013/10/18 职场文书
英语自荐信常用语句
2013/12/13 职场文书
祖国在我心中演讲稿400字
2014/05/04 职场文书
校园安全演讲稿
2014/05/09 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书
三好学生评语大全
2014/12/29 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
催款函范本大全
2015/06/24 职场文书
你会写请假条吗?
2019/06/26 职场文书
详解Vue的sync修饰符
2021/05/15 Vue.js
SQL 聚合、分组和排序
2021/11/11 MySQL
使用MybatisPlus打印sql语句
2022/04/22 SQL Server