js数据类型详解&&手动实现数据类型检测
js数据类型:
基础数据类型:string,number,boolean,null,undefined,null,symbol(es6新增的数据类型)
引用数据类型:Object(Function,Math,RegExp,Array,Date)
基础数据类型保存在栈内存中,在引用或拷贝时,会创建一个完全相等的变量
引用数据类型保存在堆内存中,存储的时一个地址,当被引用或拷贝时,会创建一个引用,多个引用指向相同的内存地址,当改变一个内存地址时,所有的引用都会发生变化
对于数据类型的检测:
1.typeof: typeof可以检测基础数据,对于基础数据类型可以进行判断,其中对于null会判断为object,对于function会判断为function
2.instanceof 对于引用数据类型进行判断,但是不能判断基础数据类型
3.Object.prototype.toString.call(),利用Object上的原型链上的方法进行判断,返回的结果是【Object, Xxx】
数据类型检测实现:
function getType(obj) { let type = typeof obj; if(type !== 'object') { return type;// 对于基础数据类型直接返回 } return Object.prototype.toString.call(obj).replace(/^\[object(\S+)\]$/,'$1'); } console.log(getType([])) //[object Array]