js 中 数据类型分为基本类型与引用类型。
JS的基本类型共有七种:bigInt(bigInt是一种内置对象,是处symbol外的第二个内置类型)、number、string、boolen、symbol、undefined、null。引用类型有对象(object)包括基本的对象、函数(Function)、数组(Array)和内置对象(Data等)。
方法一? ? 判断基础类型 可以用typeof 方式,如? typeof 2? 返回number
方法二? ? 判断引用类型 需要用到 Object.prototype.toString.call(xxx)的形式,返回“[object 类型]'的形式。
如下:
Object.prototype.toString.call({a:1})// "[object Object]"
Object.prototype.toString.call([1,2])// "[object Array]"
Object.prototype.toString.call(newDate)// "[object Date]"
Object.prototype.toString.call(function(){})// "[object Function]"
Object.prototype.toString.call(arguments)// "[object Arguments]"? ?//arguments 为函数的参数对象
ps: 为什么不直接调用toString方法,而是接用Object的原型对象prototype的toString
因为 只有object对象形式才能返回“[object Object]'的形式,
其它,例如[1,2,4].toString() 返回‘1,2,4'这样的字符串,
const f = function() {}?
?f.toString()? // 返回"function() {}"
方法三、obj instanceof Object?,可以左边放你要判断的内容,右边放类型来进行JS类型判断,只能用来判断复杂数据类型,因为instanceof 是用于检测构造函数(右边)的?prototype?属性是否出现在某个实例对象(左边)的原型链上。
[1,2]? instanceof? ?Array // true
(function(){})? instanceof? ?Function? // true
({a:1})? instanceof? Object? // true
(newDate)? instanceof? ?Date// true
obj instanceof Object方法也可以判断内置对象。