1. typeof 和 instanceof
typeof不能判断出null和对象,数组
instanceof 不能判断数据和对象
Object.prototype.toString.call(Array).slice(8,-1)
//"Function"
Object.prototype.toString.call(Array).slice(8,-1)==Object
//false
2.isArray
Array.isArray(dataArr) …//返回值 true/false
3.constructor
dataArr.constructor === Array … //返回值 true/false
这个是找构造函数的
4. toString
这个是超级万能的,什么都可以,
/**
* 是否字符串
*/
export const isString = (o) => {
return Object.prototype.toString.call(o).slice(8, -1) === 'String' //true
/**
* 是否数字
*/
export const isNumber = (o) => {
return Object.prototype.toString.call(o).slice(8, -1) === 'Number'
}
/**
* 是否boolean
*/
export const isBoolean = (o) => {
return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean'
}
/**
* 是否函数
*/
export const isFunction = (o) => {
return Object.prototype.toString.call(o).slice(8, -1) === 'Function'
}
/**
* 是否为null
*/
export const isNull = (o) => {
return Object.prototype.toString.call(o).slice(8, -1) === 'Null'
}
/**
* 是否undefined
*/
export const isUndefined = (o) => {
return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined'
}
/**
* 是否对象
*/
export const isObj = (o) => {
return Object.prototype.toString.call(o).slice(8, -1) === 'Object'
}
/**
* /是否数组
*/
export const isArray = (o) => {
return Object.prototype.toString.call(o).slice(8, -1) === 'Array'
}
不止这几种,还可以判断,时间,正则,错误对象,Symbol函数,Promise对象,Set对象等,需要的下发评论告诉我
以上方法也可以判断对象类型