ative code] 的函数体
3-1. 优势
确定任何对象的特定类型
3-2. 代码实践
Object.prototype.toString.call(null) // "[object Null]"
Object.prototype.toString.call(undefined) // "[object Undefined]"
Object.prototype.toString.call('aj') // "[object String]"
Object.prototype.toString.call(100) // "[object Number]"
Object.prototype.toString.call(true) // "[object Boolean]"
Object.prototype.toString.call(Symbol()) // "[object Symbol]"
Object.prototype.toString.call(BigInt(100)) // "[object BigInt]"
Object.prototype.toString.call({}) // "[object Object]"
Object.prototype.toString.call([]) // "[object Array]"
Object.prototype.toString.call(new Date()) // "[object Date]"
function Fn() {}
Object.prototype.toString.call(Fn) // "[object Function]"
let reg = /^1/g
Object.prototype.toString.call(reg) // "[object RegExp]"
/** JS数据类型 */
export enum DataType {
NULL = 'Null',
UNDEFINED = 'Undefined',
STRING = 'String',
NUMBER = 'Number',
BOOLEAN = 'Boolean',
SYMBOL = 'Symbol',
BIGINT = 'BigInt',
OBJECT = 'Object',
ARRAY = 'Array',
DATE = 'Date',
FUNCTION = 'Function',
REGEXP = 'RegExp',
/**
* 获取数据类型
* @param {any} data 输入数据
* @returns {DataType} 数据数据的数据类型
*/
export const getDataType = (data: any): DataType => Object.prototype.toString.call(data).slice(8, -1) as DataType;
3-3. 封装功能函数
封装成一个功能函数,可以得到数据类型:
/**
* 获取数据类型 方案一:数组切割
* @author 阿吉
* @param {Any} val
* @returns {String} 数据类型
*/
const getTypeObject = (val) => Object.prototype.toString.call(val).slice(8, -1)
const getTypeReflect = (val) =>