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 相关文章推荐
JS获取DropDownList的value值与text值的示例代码
Jan 07 Javascript
Jquery解析json字符串及json数组的方法
May 29 Javascript
Bootstrap 折叠(Collapse)插件用法实例详解
Jun 01 Javascript
详解能在多种前端框架下使用的表格控件
Jan 11 Javascript
jquery仿京东侧边栏导航效果
Mar 02 Javascript
JavaScript读写二进制数据的方法详解
Sep 09 Javascript
详解vue-router传参的两种方式
Sep 10 Javascript
每个 JavaScript 工程师都应懂的33个概念
Oct 22 Javascript
浅谈vux之x-input使用以及源码解读
Nov 04 Javascript
layui动态绑定事件的方法
Sep 20 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
Jun 05 Javascript
JavaScript中使用Spread运算符的八种方法总结
Jun 18 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截取后台登陆密码的代码
2012/05/05 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
php类的扩展和继承用法实例
2015/06/20 PHP
php利用gd库为图片添加水印
2016/11/09 PHP
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
提交表单时执行func方法实现代码
2013/03/17 Javascript
获取下拉列表框的值是数组,split,$.inArray示例
2013/11/13 Javascript
js 获取、清空input type="file"的值示例代码
2014/02/19 Javascript
JavaScript中连接操作Oracle数据库实例
2015/04/02 Javascript
jQuery中设置form表单中action值的实现方法
2016/05/25 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
Bootstrap table的使用方法
2016/11/02 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
详解redux异步操作实践
2018/08/15 Javascript
js+html5 canvas实现ps钢笔抠图
2019/04/28 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
2019/05/21 Javascript
Python中使用pprint函数进行格式化输出的教程
2015/04/07 Python
Python中动态检测编码chardet的使用教程
2017/07/06 Python
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
python 统计list中各个元素出现的次数的几种方法
2021/02/20 Python
匡威意大利官方商店 :Converse意大利
2018/11/27 全球购物
机械设计专业应届生求职信
2013/11/21 职场文书
中学教师自我鉴定
2014/02/07 职场文书
党风廉政建设责任书
2014/04/14 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
2015年银行柜员工作总结报告
2015/04/01 职场文书
社区敬老月活动总结
2015/05/07 职场文书
党小组推荐意见
2015/06/02 职场文书
创业计划书之酒吧
2019/12/02 职场文书
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
2021/05/25 HTML / CSS
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python