原始类型(基本类型):
ES5( Undfined、Null、String、Boolean、Number )
ES6( BigInt、symbol )
引用类型(复杂类型):
Object(Date、Array、Function、Object)
typeof 检测时:
基本数据类型检测:
console.log(typeof undefined); // undefined
console.log(typeof '112'); // string
console.log(typeof 123); // number
console.log(typeof true); // boolean
console.log(typeof null); // object
引用数据类型检测:
let fun = function () { return 1};
console.log("函数:", typeof fun); // function 具体原因是因为在js中定义时,会在方法上使用call方法,有call就是function,没有就是objetc;
let arr = [1,2,3]
console.log('数组:', typeof arr); // object
let date = new Date();
console.log('时间对象:', typof date); // object 因为通过new实例出来的就是一个对象
总结:少个null, 多个function
instanceof 检测结果:boolean( true || false)
用法就是 :A instanceof B (意思就是:对象A是否由B对象实例化出来的)
instanceof 通过原型链查找的,有点像 儿子=》爸爸=》爷爷 这种关系!!!
例子:
console.log([] instanceof Object); // true
用来区分类型为 object 具体属于哪一种Object.prototype.toString.call();
※ 构造函数--实例化出来的对象,最好使用 instanceof 来检测;如果使用 Object.prototype.toString.call() 进行检测的话,则没办法判断到底是实例后的对象还是原生Object对象。
就这样子!