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 相关文章推荐
分享10篇优秀的jQuery幻灯片制作教程及应用案例
Apr 16 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
Feb 26 Javascript
js函数定时器实现定时读取系统实时连接数
Apr 30 Javascript
javascript检测两个数组是否相似
May 19 Javascript
在JavaScript应用中使用RequireJS来实现延迟加载
Jul 01 Javascript
js模仿php中strtotime()与date()函数实现方法
Aug 11 Javascript
AngularJS创建自定义指令的方法详解
Nov 03 Javascript
ajax图片上传,图片异步上传,更新实例
Dec 30 Javascript
原生js实现密码输入框值的显示隐藏
Jul 17 Javascript
JavaScript取得gridview中获取checkbox选中的值
Jul 24 Javascript
jquery图片预览插件实现方法详解
Jul 18 jQuery
Layui点击图片弹框预览的实现方法
Sep 16 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
PHP中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
php加密解密函数authcode的用法详细解析
2013/10/28 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
2015/02/07 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
2018/05/16 PHP
PHP7创建销毁session的实例方法
2020/02/03 PHP
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
2013/01/23 Javascript
js禁止document element对象选中文本实现代码
2013/03/21 Javascript
jquery的选择器的使用技巧之如何选择input框
2013/09/22 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
JavaScript避免代码的重复执行经验技巧分享
2014/04/17 Javascript
js随机生成字母数字组合的字符串 随机动画数字
2015/09/02 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
2016/05/10 Javascript
js拖拽功能实现代码解析
2016/11/28 Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
2018/09/27 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
[04:10]2018年度CS GO玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
2019/12/03 Python
检测tensorflow是否使用gpu进行计算的方式
2020/02/03 Python
基于python3实现倒叙字符串
2020/02/18 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
师范应届生语文教师求职信
2013/10/29 职场文书
学雷锋月活动总结
2014/04/25 职场文书
2014年教研室工作总结
2014/12/06 职场文书
详解Java实践之适配器模式
2021/06/18 Java/Android
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL
详解Python内置模块Collections
2022/03/22 Python