TypeUtil--判断js数据类型

TypeUtil

前言

判断数据类型,我们经常用到typeof、instanceof、Array.isArray()等运算符或方法判断类型,然typeof和instanceof并不全面,typeof不能区分null、数组和对象,instanceof不能区分对象和数组。因为在js中数组是对象的子集。故提供一份完整的判断类型util供大家参考。

代码

// type.js
const types = ['Arguments', 'Function', 'Array', 'Object', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet']
const fns = {}
types.forEach(v => {
  fns[`is${v}`] = obj => {
    return Object.prototype.toString.call(obj) === `[object ${v}]`
  }
})
fns.isJson = obj => {
  if (fns.isString(obj)) {
    try {
      const o = JSON.parse(obj)
      return fns.isObject(o) || fns.isArray(o)
    } catch (err) {
      return false
    }
  }
  return false
}

export default {
  ...fns
}

猜你喜欢

转载自blog.csdn.net/harmsworth2016/article/details/85044172