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 相关文章推荐
基于JQuery的日期联动实现代码
Feb 24 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
Oct 09 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
Jun 29 Javascript
一个页面元素appendchild追加到另一个页面元素的问题
Jan 27 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
Aug 24 Javascript
JavaScript遍历Json串浏览器输出的结果不统一问题
Nov 03 Javascript
js定时器实例分享
Dec 20 Javascript
JS获得一个对象的所有属性和方法实例
Feb 21 Javascript
解决VUE框架 导致绑定事件的阻止冒泡失效问题
Feb 24 Javascript
JS实现的检验身份证格式并输出出生日期,年龄,性别,出生地示例
May 17 Javascript
Angular进行简单单元测试的实现方法实例
Aug 16 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
Aug 26 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中的integer类型使用分析
2010/07/27 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
2013/11/12 PHP
js+php实现静态页面实时调用用户登陆状态的方法
2015/01/04 PHP
Symfony页面的基本创建实例详解
2015/01/26 PHP
PHP上传图片类显示缩略图功能
2016/06/30 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
浅谈php使用curl模拟多线程发送请求
2019/03/08 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
2019/10/21 PHP
纯js实现背景图片切换效果代码
2010/11/14 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
js判断文本框剩余可输入字数的方法
2015/02/04 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
4种JavaScript实现简单tab选项卡切换的方法
2016/01/06 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
基于原生js运动方式关键点的总结(推荐)
2017/10/01 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
ant-design-vue 实现表格内部字段验证功能
2019/12/16 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
javascript中正则表达式语法详解
2020/08/07 Javascript
[44:41]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python3批量删除豆瓣分组下的好友的实现代码
2016/06/07 Python
Docker部署Python爬虫项目的方法步骤
2020/01/19 Python
使用Tensorboard工具查看Loss损失率
2020/02/15 Python
Sentry错误日志监控使用方法解析
2020/11/12 Python
使用HTML5的表单验证的简单示例
2015/09/09 HTML / CSS
一道Delphi上机题
2012/06/04 面试题
幼儿园家长评语
2014/02/10 职场文书
国庆宣传标语
2014/06/30 职场文书
南京市纪委监察局整改方案
2014/09/16 职场文书
教师节横幅标语
2014/10/08 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
《小摄影师》教学反思
2016/02/18 职场文书
python实现自定义日志的具体方法
2021/05/28 Python
redis击穿 雪崩 穿透超详细解决方案梳理
2022/03/17 Redis