1、isStatic:检测数据是不是除了symbol外的原始数据

function isStatic(value) {
return (
typeof value === 'string' ||
typeof value === 'number' ||
typeof value === 'boolean' ||
typeof value === 'undefined' ||
value === null
)
}

2、isPrimitive: 检测数据是不是原始数据

function isPrimitive(value) {
return isStatic(value) || typeof value === 'symbol'
}

3、isObject: 判断数据是不是引用类型的数据(例如:arrays,functions,objects,regexes,new Number(0),以及new String(‘’))

function isObject(value) {
let type = typeof value;
return value != null && (type == 'object' || type == 'function');
}

4、isObject:检查value是否是  类对象,如果一个值是类对象,那么它不应该是null,而且typeof后的结果是“object”

function isObjectLike(value) {
return value != null && typeof value == 'object'
}

5、getRawType:获取数据类型,返回结果为 Number、String、Object、Array

function getRawType(value) {
return Object.prototype.toString.call(value).slice(8,-1)
}

6、isPlainObject:判断数据是不是Object类型数据

function isPlainObject(obj) {
return Object.prototype.toString.call(obj) === '[object Object]'
}

7、isArray:判断数据是不是数组类型的数据

function isArray(arr) {
return Object.prototype.toString.call(arr) === '[object Array]'
} 将isArray挂在到Array上
Array.isArray = Aray.isArray || isArray;

8、isRegExp:判断数据是不是正则对象,

function isRegExp(value) {
return Object.prototype.toString.call(value) === '[object RegExp]'
}
isDate:判断是不是时间对象
function isDate(value) {
return Object.prototype.toString.call(value) === '[object Date]'
} 检查value是不是函数
Object.prototype.toStrig.call(value) === '[object Function]'

9、isNative:判断value是不是浏览器的内置函数

内置函数toString后的主体代码块为【native code】,而非内置函数则为相关代码,所以非内置函数可以进行拷贝(toString后起头去尾再由Function转)

function isNative(value) {
return value === 'function' && /native code/.test(value.toString())
}

10、isLength:检查value是否为有效的类数组长度

function isLength(value) {
return typeof value == 'number' && value >-1 && value %1 == 0 && value <= Number.MAX_SAFE_INTEGER;
}

11、isEmpty:检查value是否为空

如果是null,直接返回true,如果是类数组,判断数据长度;如果是Object,判断是否具有属性,如果是其他数据,直接返回false

funxtion isEmpty(value) {
if(value == null) {
return true;
}
if(isArrayLike(value)){
return !value.length;
}else if(isPlainObject(value)){
for(let key in value) {
if(hasOwnProperty.call(value,key)){
return false;
}
}
}
return false;
}

12、cached:记忆函数:缓存函数的运算结果

function cached(fn) {
let cache = Object.create(null);
return function cacheFn(str) {
let hit = cache[str];
return hit || (cache[str] = fn(str))
}
}

13、camelize:横线转驼峰命名

let camelizeRE = /-(\w)/g;
funtcion camelize(str) {
return str.replace(camelizeRE,function(_,c){
return c? c.toUpperCase() : '';
})
}

14、hyhenate:驼峰命名转横线命名:拆分字符串,使用-相连,并转为小写

let hyphenateRE = /\B(A-Z)/g;
function hyphenate(sr){
return str.replace(hyphenateRE,'-$1').toLowerCase()
}

15、capitalize:字符串首位大写

function capitalize(str) {
return str.charAt(0).toUpperCase() +str.slice(1)
}

16、识别各种浏览器及平台

let inBrowser = typeof window !== 'undefined';

//运行环境是微信
let inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;
let weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();
//浏览器 UA 判断
let UA = inBrowser && window.navigator.userAgent.toLowerCase();
let isIE = UA && /msie|trident/.test(UA);
let isIE9 = UA && UA.indexOf('msie 9.0') > 0;
let isEdge = UA && UA.indexOf('edge/') > 0;
let isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');
let isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');
let isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge;

  

 

 

 

 

 

JS开发常用工具函数的更多相关文章

  1. JS开发常用工具函数 总结

    js原生工具库 1.isStatic:检测数据是不是除了symbol外的原始数据 */ function isStatic(value) { return( typeof value === 'str ...

  2. Node.js:常用工具util

    概要:本篇博客的主要内容是介绍node.js的常用工具util. 1.util.inherits util.inherits(constructor,superConstructor)是一个实现对象间 ...

  3. Node.js:常用工具

    ylbtech-Node.js:常用工具 1.返回顶部 1. Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简 ...

  4. 学习游戏服务器开发必看,C++游戏服务器开发常用工具介绍

    C++游戏服务器开发常用工具介绍 在软件开发过程中需要使用的工具类型实属众多,从需求建模到软件测试,从代码编译到工程管理,这些工具都对项目有着不可替代的作用.庄子有云,"吾生也有涯,而知也无 ...

  5. C#(Net)软件开发常用工具汇总,提高你的开发效率

    C#(Net)软件开发常用工具汇总,提高你的开发效率 写代码也要读书,爱全栈,更爱生活.每日更新原创IT编程技术及日常实用技术文章. 我们的目标是:玩得转服务器Web开发,搞得懂移动端,电脑客户端更是 ...

  6. Android开发常用工具汇总

    Android开发常用工具汇总,本文章不断更新完善 一.数据库小工具Sqlite Developer  SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的, ...

  7. Java后端开发常用工具

    Java后端开发常用工具推荐: 俗话说,工欲善其事,必先利其器.不过初学时候不大建议过度依赖IDE等过多工具,这会让自己的编程基础功变得很差,比如各种语法的不熟悉,各种关键字比如synchronize ...

  8. numpy 常用工具函数 —— np.bincount/np.average

    numpy 常用工具函数 —— np.bincount/np.average numpy 常用api(一) numpy 常用api(二) 一个函数提供 random_state 的关键字参数(keyw ...

  9. Node.js:常用工具、路由

    一.常用工具util util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. 1.util.inherits util.inherit ...

随机推荐

  1. 洗牌利器——random.shuffle()函数

    random.shuffle()是一个非常实用但是又非常容易被忽略的函数,shuffle在英语里是"洗牌"的意思,该函数非常形象地模拟了洗牌的过程,即: random.shuffl ...

  2. Linux kali安装或更新之后出现乱码

    打开终端,输入以下命令,之后重启. apt-get install ttf-wqy-zenhei

  3. Jquery实现ajax常用属性

  4. 「AHOI2014/JSOI2014」骑士游戏

    「AHOI2014/JSOI2014」骑士游戏 传送门 考虑 \(\text{DP}\). 设 \(dp_i\) 表示灭种(雾)一只编号为 \(i\) 的怪物的代价. 那么转移显然是: \[dp_i ...

  5. 代理模式之静态代理,JDK动态代理和cglib动态代理

    代理模式,顾名思义,就是通过代理去完成某些功能.比如,你需要购买火车票,不想跑那么远到火车站售票窗口买,可以去附近的火车票代售点买,或者到携程等第三方网站买.这个时候,我们就把火车站叫做目标对象或者委 ...

  6. 为PHP开发搭建环境

    为了能在自己的电脑上(mac OS系统)开始编写PHP代码并完成运行,需要有: 1.安装Web服务器 2.安装PHP 3.安装数据库,比如MySQL 4.一个PHP的IDE 为了上面所提到的1~3步的 ...

  7. 数据库转换Mysql-Oracle之建表语句

    Mysql建库语句(导出的): DROP TABLE IF EXISTS `tablename`; CREATE TABLE `tablename` ( `C_DI_CDE` varchar(40) ...

  8. Linux内核5.4正式将华为EROFS超级文件系统合入主线

    导读 近期,Linux内核5.4系列宣布全面可用,添加了许多新功能,更强的安全性和更新的驱动程序,以提供更好的硬件支持.Linux内核5.4增加对微软exFAT文件系统的支持,另外还支持内核锁定功能, ...

  9. Codeforces Round #586 (Div. 1 + Div. 2)E(拓扑排序,思维)

    #include<bits/stdc++.h>using namespace std;int n,m,s; vector<int>edge[200007];queue<i ...

  10. nacos 日志问题 ERR-CODE: [NACOS-0002], Type: [环境问题]

    nacos配置中心配置后,项目启动正常,运行项目也正常,但是总是打印如下日志: 2019-10-11 15:44:09.792 [com.alibaba.nacos.client.Worker.lon ...