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 相关文章推荐
event对象获取方法总结在google浏览器下测试
Nov 03 Javascript
引用 js在IE与FF之间的区别详细解析
Nov 20 Javascript
使用jquery中height()方法获取各种高度大全
Apr 02 Javascript
JavaScript中的console.trace()函数介绍
Dec 29 Javascript
如何让一个json文件显示在表格里【实现代码】
May 09 Javascript
Angularjs 实现移动端在线测评效果(推荐)
Apr 05 Javascript
详解如何使用webpack+es6开发angular1.x
Aug 16 Javascript
使用Vue实现移动端左滑删除效果附源码
May 16 Javascript
vue-cli3 配置开发与测试环境详解
May 17 Javascript
jQuery实现可编辑的表格
Dec 11 jQuery
vue 出现data-v-xxx的原因及解决
Aug 04 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
Nov 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
将数组写入txt文件 var_export
2009/04/21 PHP
Yii2中事务的使用实例代码详解
2016/09/07 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
2016/11/23 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
php cli模式下获取参数的方法
2017/05/05 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
2018/05/12 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
win10下 php安装seaslog扩展的详细步骤
2020/12/04 PHP
用 Javascript 验证表单(form)中多选框(checkbox)值
2009/09/08 Javascript
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
2016/04/06 Javascript
JavaScript操作 url 中 search 部分方法函数
2016/06/15 Javascript
node.js缺少mysql模块运行报错的解决方法
2016/11/13 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
Node 升级到最新稳定版的方法分享
2018/05/17 Javascript
layui radio性别单选框赋值方法
2018/08/15 Javascript
基于nodejs的雪碧图制作工具的示例代码
2018/11/05 NodeJs
vue从零实现一个消息通知组件的方法详解
2020/03/16 Javascript
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
[03:48]大碗DOTA
2019/07/25 DOTA
Python使用函数默认值实现函数静态变量的方法
2014/08/18 Python
Python验证文件是否可读写代码分享
2017/12/11 Python
Python实现简单生成验证码功能【基于random模块】
2018/02/10 Python
Django的性能优化实现解析
2019/07/30 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
Python用摘要算法生成token及检验token的示例代码
2020/12/01 Python
外贸业务员工作职责
2014/01/06 职场文书
小学生倡议书范文
2014/05/13 职场文书
爱护环境卫生倡议书
2015/04/29 职场文书
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL