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 加载并解析XML字符串的代码
Dec 13 Javascript
javascript检测浏览器flash版本的实现代码
Dec 06 Javascript
通过百度地图获取公交线路的站点坐标的js代码
May 11 Javascript
jquery表单对象属性过滤选择器实例分析
May 18 Javascript
Jquery幻灯片特效代码分享--打开页面随机选择切换方式(3)
Aug 15 Javascript
jquery实现的伪分页效果代码
Oct 29 Javascript
详解Chai.js断言库API中文文档
Jan 31 Javascript
vue.js使用watch监听路由变化的方法
Jul 08 Javascript
微信小程序网络请求封装示例
Jul 24 Javascript
详解基于electron制作一个node压缩图片的桌面应用
Jan 29 Javascript
JS/CSS实现字符串单词首字母大写功能
Sep 03 Javascript
javascript 模块依赖管理的本质深入详解
Apr 30 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缓冲输出实例分析
2015/01/05 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
2016/03/02 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
2010/04/27 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
JQuery中属性过滤选择器用法实例分析
2015/05/18 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
bootstrap table实现x-editable的行单元格编辑及解决数据Empty和支持多样式问题
2017/08/10 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
浅谈vue异步数据影响页面渲染
2019/10/29 Javascript
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
2020/08/31 Javascript
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
2020/12/19 Vue.js
浅析Python 中整型对象存储的位置
2016/05/16 Python
Python的Twisted框架中使用Deferred对象来管理回调函数
2016/05/25 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
解决新django中的path不能使用正则表达式的问题
2018/12/18 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
详解python websocket获取实时数据的几种常见链接方式
2019/07/01 Python
使用tensorboard可视化loss和acc的实例
2020/01/21 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
网络工程系信息安全技术专业大学生求职信
2013/10/22 职场文书
就业推荐表自我鉴定
2013/10/29 职场文书
俞敏洪北大演讲稿
2014/05/22 职场文书
会议室标语
2014/06/21 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2015年党员自我剖析材料
2014/12/17 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书