js instanceof和typeof的区别及简单用法

js中判断一个变量的类型,通常的做法是用typeof方法,看它返回的是 什么,但是对于数组和对象它返回的都是object,ECMAScript引入了java中的instanceof 方法来弥补这一缺陷,来判断该变量是否是某种类型,它的返回值只有truefalse。

一、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(/
/));//object
24     var a;
25     console.log(getDataType(a));//undefined 如果传入没有声明的变量会直接报错

对于instanceof更复杂的用法有必要去深究一下,这里就不班门弄斧了

不积跬步无以至千里
原文地址:https://www.cnblogs.com/lyt0207/p/11812658.html