1.JS类型分为两大类:基础类型、引用类型
(1)基础类型:String、Number、Boolean、null、undefined、symbol
(2)引用类型:Object
2.常用判断类型的方式
(1)typeof
let a ;
a = '';
console.log(typeof a); //string
a = 1222;
console.log(typeof a); //number;
a = undefined;
console.log(typeof a); //undefined;
a = null;
console.log(typeof a); //object;
a = [1,2,3];
console.log(typeof a); //object;
a = true;
console.log(typeof a); //boolean
a = ()=>{};
console.log(typeof a); //function
a = NaN;
console.log(typeof a); //number;
以上可见typeof会返回的数据类型string、number、boolean、undefined、object、function;
特别注意是null,返回的类型也是object,对于一些创建对象都会返回object
(2)instanceof
let a;
a = [];
console.log(a instanceof Array); //true;
console.log(a instanceof Object); //true;
a = {};
console.log(a instanceof Object); //true;
a = new Date();
console.log(a instanceof Date); //true
a = ()=>{};
console.log(a instanceof Function); //true
以上可见instanceof用于判断对象的具体类型,返回的是布尔值,检测的是原型
(3)constructor
console.log(''.constructor === String); //true
console.log([].constructor === Array);//true
console.log({}.constructor === Object);//true
console.log(new Date().constructor === Date);//true
console.log(true.constructor === Boolean);//true
以上可见,可以利用原型对象上的constructor来判断类型,特别注意,undefinded、null是无效对象,因此是没有constructor函数的;同时因为 prototype是可以重写的,当开发者重写后,原有的constructor引用丢失,constructor会默认是object