封装一个判断数据类型的函数
function getType(value){
let type = typeof value
if(type !== 'object'){
return type;
}
return Object.prototype.toString.call(value).replace(/^\[object (\S+)\]$/, '$1');
}
- 方法先使用typeof做判断,若为基本类型,直接输出,由于typeof无法精确判断引用类型,所以再进一步进行判断;
- 利用Object原型对象上的toString方法返回的内部属性[object Xxxx]进行精确判断,Object对象可直接使用属于其的toString方法,其他对象需要用call或apply修改this指向来调用正确方法;
- 最后从返回值中利用正则表达式查找出精确的数据类型。