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瀑布流插件Wookmark使用实例
Apr 02 Javascript
跟我学习javascript的函数调用和构造函数调用
Nov 16 Javascript
jQuery+ajax+asp.net获取Json值的方法
Jun 08 Javascript
JQuery.validationEngine表单验证插件(推荐)
Dec 10 Javascript
微信小程序 页面跳转及数据传递详解
Mar 14 Javascript
Vue2.0 UI框架ElementUI使用方法详解
Apr 14 Javascript
详解vue.js的devtools安装
May 26 Javascript
Vue-cli配置打包文件本地使用的教程图解
Aug 02 Javascript
ES6的Fetch异步请求的实现方法
Dec 07 Javascript
localstorage实现带过期时间的缓存功能
Jun 28 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
Jul 30 Javascript
微信小游戏中three.js离屏画布的示例代码
Oct 12 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 的几个配置文件函数
2006/12/21 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
使用图灵api创建微信聊天机器人
2015/07/23 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
jquery表单验证使用插件formValidator
2012/11/10 Javascript
使用js检测浏览器的实现代码
2013/05/14 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
jquery Validation表单验证使用详解
2020/09/12 Javascript
删除javascript所创建子节点的方法
2015/05/21 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
2015/09/20 Javascript
百度地图给map添加右键菜单(判断是否为marker)
2016/03/04 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
Vue2几种常见开局方式详解
2017/09/09 Javascript
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
2018/07/18 Javascript
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
python-web根据元素属性进行定位的方法
2019/12/13 Python
Python编译成.so文件进行加密后调用的实现
2019/12/23 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
python 制作网站小说下载器
2021/02/20 Python
HTML5 canvas 瀑布流文字效果的示例代码
2018/01/31 HTML / CSS
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
当当网软件测试笔试题
2015/11/24 面试题
母亲80寿诞答谢词
2014/01/16 职场文书
结婚保证书
2015/01/16 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
详解如何使用Node.js实现热重载页面
2021/05/06 Javascript
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL