js 中 數(shù)據(jù)類型分為基本類型與引用類型。
JS的基本類型共有七種:bigInt(bigInt是一種內(nèi)置對象,是處symbol外的第二個內(nèi)置類型)、number、string、boolen、symbol、undefined、null。引用類型有對象(object)包括基本的對象、函數(shù)(Function)、數(shù)組(Array)和內(nèi)置對象(Data等)。
方法一? ? 判斷基礎(chǔ)類型 可以用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 為函數(shù)的參數(shù)對象
ps: 為什么不直接調(diào)用toString方法,而是接用Object的原型對象prototype的toString
因為 只有object對象形式才能返回“[object Object]'的形式,
其它,例如[1,2,4].toString() 返回‘1,2,4'這樣的字符串,
const f = function() {}?
?f.toString()? // 返回"function() {}"
方法三、obj instanceof Object?,可以左邊放你要判斷的內(nèi)容,右邊放類型來進(jìn)行JS類型判斷,只能用來判斷復(fù)雜數(shù)據(jù)類型,因為instanceof 是用于檢測構(gòu)造函數(shù)(右邊)的?prototype?屬性是否出現(xiàn)在某個實例對象(左邊)的原型鏈上。
[1,2]? instanceof? ?Array // true
(function(){})? instanceof? ?Function? // true
({a:1})? instanceof? Object? // true
(newDate)? instanceof? ?Date// true
obj instanceof Object方法也可以判斷內(nèi)置對象。