在js中,有5中基本数据类型和1种复杂数据类型
基本数据类型:Underfined,Null,Boolean,String,Number
复杂数据类型:Object,包含Array,Function,Data...
1、使用typeof检测
可以检测:number,string,boolean,function,undefined
不可以检测: array,json,null,date,regex,error只能被检测出object,
2、使用instanceof检测
可以检测: Array,Object,Function,Date,RegExp,Error,
不可以检测基本数据类型:Number,String,Boolean,Undefined, Null
但是使用这种方式创建变量就可以
const num = new Number(123);
const str = new String('1234');
const bool = new Boolean(false);
3、使用constructor检测
constructor是原型对象上的属性,指向构造函数。
const num = 123;
num.constructor => function Number() {[native code]}
所以可以使用 num.constructor === Number
不可以检测:undefined,null
缺点: 实例的constructor属性可以被修改,会导致检测出的结果不正确
4、使用Object.prototype.toString.call
使用方式:
Object.prototype.toString.call(num) => '[object Number]'
...
可检测所有数据类型
所以可以使用Object.prototype.toString.call(num) === '[object Number]'
网友评论