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 相关文章推荐
IE 上下滚动展示模仿Marquee机制
Dec 20 Javascript
JQuery之拖拽插件实现代码
Apr 14 Javascript
javascript 日期时间 转换的方法
Feb 21 Javascript
从jquery的过滤器.filter()方法想到的
Sep 29 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
May 07 Javascript
推荐10 个很棒的 jQuery 特效代码
Oct 04 Javascript
BootStrap 弹出层代码
Feb 09 Javascript
vue elementui form表单验证的实现
Nov 11 Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
Apr 11 Javascript
js中offset,client , scroll 三大元素知识点总结
Sep 11 Javascript
浅谈vue3中effect与computed的亲密关系
Oct 10 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
Apr 30 jQuery
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
乐信RP2100的电路分析和打磨
2021/03/02 无线电
PHP抽象类 介绍
2012/06/13 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
php实现粘贴截图并完成上传功能
2015/05/17 PHP
PHP判断JSON对象是否存在的方法(推荐)
2016/07/06 PHP
jscript之Read an Excel Spreadsheet
2007/06/13 Javascript
JavaScript 学习笔记(十一)
2010/01/19 Javascript
编写自己的jQuery插件简单实现代码
2011/04/19 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
jQuery插件datatables使用教程
2016/04/21 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
Angularjs手动解析表达式($parse)
2016/10/12 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
js编写选项卡效果
2017/05/23 Javascript
PHP7新特性简述
2017/06/11 Javascript
自定义vue全局组件use使用、vuex的使用详解
2017/06/14 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
五步轻松实现JavaScript HTML时钟效果
2020/03/25 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
vue实现输入框自动跳转功能
2020/05/20 Javascript
[16:21]教你分分钟做大人:圣堂刺客
2014/12/03 DOTA
python基础教程之五种数据类型详解
2017/01/12 Python
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
python 求定积分和不定积分示例
2019/11/20 Python
Django项目基础配置和基本使用过程解析
2019/11/25 Python
详解使用HTML5 Canvas创建动态粒子网格动画
2016/12/14 HTML / CSS
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
财务学生的职业生涯发展
2014/02/11 职场文书
合伙经营协议书范本
2014/09/13 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python