@[TOC](js中typeOf无法区分数组对象)
前提:很多时候我们在JS中用typeOf来判断值类型,如:typeOf ‘abc’//string ,typeOf 123 //number;
但当判断对象为数组时返回的仍是’object’
这时候我们可以使用Object.prototype.toString.call()方法来判断
一、基础使用
Object.prototype.toString.call(null);//”[object Null]”
Object.prototype.toString.call(undefined);//”[object Undefined]”
Object.prototype.toString.call('abc');//”[object String]”
Object.prototype.toString.call(123);//”[object Number]”
Object.prototype.toString.call(true);//”[object Boolean]”
二、特殊使用
当判断值为NaN时返回的仍是[object Number],这是需要特殊判断一下,可以封装成如下方法
function getType(value){
const type = Object.prototype.toString.call(value).slice(8,-1);//[object Number]从类型开始截取
if(type === 'Number' && isNaN(value)){
return "NaN"
}else{
return type
}
}