js instanceof和typeof的区别及简单用法
js中判断一个变量的类型,通常的做法是用typeof方法,看它返回的是 什么,但是对于数组和对象它返回的都是object,ECMAScript引入了java中的instanceof 方法来弥补这一缺陷,来判断该变量是否是某种类型,它的返回值只有true和false。
一、typeOf
二、instanceof
1 [] instanceof Object //false
2
3 [] instanceof Array //true
4
5 {} instanceof Object // true
6
7 {} instanceof Array // false
结合这两种方法,可以通过封装函数来判断某个变量的类型
1 function getDataType(obj) { 2 if(obj === null){ 3 return "null"; 4 }else if(typeof obj === "object"){ 5 if(obj instanceof Array){ 6 return "array"; 7 }else{ 8 return "object"; 9 } 10 }else{ 11 return typeof obj; 12 } 13 } 14 15 console.log(getDataType(111)); //number 16 console.log(getDataType("fasd"));//string 17 console.log(getDataType(true));//boolean 18 console.log(getDataType(function () { }));//function 19 console.log(getDataType([]));//array 20 console.log(getDataType({}));//object 21 console.log(getDataType(null));//null 22 console.log(getDataType(undefined));//undefined 23 console.log(getDataType(/\n/));//object 24 var a; 25 console.log(getDataType(a));//undefined 如果传入没有声明的变量会直接报错
对于instanceof更复杂的用法有必要去深究一下,这里就不班门弄斧了
不积跬步无以至千里