typeof干啥的?
檢測類型。js有5中類型.string,number,boolean.function.object
可以看出js的類型是比較少的,這個不太好。比如構(gòu)造函數(shù)和函數(shù)的類型都是一樣的。
如何使用?
var a='apple';
typeof(a)//"string"
var b=9
typeof(b)//"number"
typeof(true)//"boolean"
var sum=(a,b)=>a+b;
typeof(sum)//"function"
typeof(Promise)//"function"
var s={name:'xoaoming',
age:18}
typeof(s)//"object"
typeof([1,2,3])//"object"
這種類型劃分有何缺點?
類型太少,導(dǎo)致很多完全不同的東西都是同一個類型。比如object類型
var s={name:'xoaoming',
age:18}
typeof(s)//"object"
typeof([1,2,3])//"object"
如何解決object帶來的問題?
用instanceof
var a=new String('apple')
a instanceof String//true
x=new Array([1,2,3])
x instanceof Array//true
var mydate=new Date()
mydate instanceof Date//true
var s={name:'xoaoming',
age:18}
s instanceof Object//true
注意instanceof這里那個Object類型中O大寫
還有哪些查看類型的姿勢?
var x=[]
x.constructor
//function Array() { [native code] }
var x=[]
Object.prototype.toString.call(x)
//"[object Array]"
var mydate=new Date()
Object.prototype.toString.call(mydate)
//"[object Date]"
var s={name:'xoaoming',
age:18}
Object.prototype.toString.call(s)
//"[object Object]"
總結(jié)
最全能的判斷方法實際上是Object.prototype.toString.call

image.png
參考
javascript - js中Object類型與對象什么關(guān)系? - SegmentFault
判斷 JS 中對象的類型 - Orson - 博客園
JavaScript instanceof 運算符深入剖析