typeof干啥的?
检测类型。js有5中类型.string,number,boolean.function.object
可以看出js的类型是比较少的,这个不太好。比如构造函数和函数的类型都是一样的。
如何使用?
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"
这种类型划分有何缺点?
类型太少,导致很多完全不同的东西都是同一个类型。比如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]"
总结
最全能的判断方法实际上是Object.prototype.toString.call
参考
javascript - js中Object类型与对象什么关系? - SegmentFault
判断 JS 中对象的类型 - Orson - 博客园
JavaScript instanceof 运算符深入剖析