JS常用工具函数(一)

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、isObjectLike:检查 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)
}
//getoRawType([]) ==> Array

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 = Array.isArray || isArray;

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

function isRegExp(value) {
    return Object.prototype.toString.call(value) === '[object RegExp]'
}

9、isDate:判断数据是不是时间对象

 


function isDate(value) {
    return Object.prototype.toString.call(value) === '[object Date]'
}

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

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

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

 11、isFunction:检查 value 是不是函数


function isFunction(value) {
    return Object.prototype.toString.call(value) === '[object Function]'
}

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


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

13、isArrayLike:检查 value 是否是类数组

如果一个值被认为是类数组,那么它不是一个函数,并且value.length是个整数,大于等于 0,小于或等于 Number.MAX_SAFE_INTEGER。这里字符串也将被当作类数组。


function isArrayLike(value) {
      return value != null && isLength(value.length) && !isFunction(value);
}

 14、isEmpty:检查 value 是否为空

如果是null,直接返回true;如果是类数组,判断数据长度;如果是Object对象,判断是否具有属性;如果是其他数据,直接返回false(也可改为返回true)

function 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;
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值