欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

typeof和instanceof

程序员文章站 2022-06-04 23:24:07
...

JS数据类型

5种基本(值)数据类型:Number、String、boolean、null、undefined

3种引用(对象)类型:Object,Function,Array

 

typeof

typeof 是判断参数是什么类型的实例,返回值为说明运算数类型的字符串

类型 结果
Number 'Number'
String 'String'
boolean 'boolean'
null 'object'
undefined 'undefined'
Object 'object'
Function 'function'
Array 'object'

 若参数为引用类型,始终返回“object”,而对于Array、null始终返回“object”,所以用typeof来判断参数类型有很大的局限性。

 

instanceof

instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。

语法:

object instanceof constructor

要求前面是个对象,后面是一个构造函数。而且返回的是布尔型的,不是true就是false。

a instanceof b:判断a是否为b的实例,可以用于继承关系中

b是c的父对象,a是c的实例,a instanceof b 与 a instanceof c 结果均为true

对于所有的引用类型,均为Object的实例

 

我们来看下instanceof如何处理null和数组

var a=null;
console.log(a  instanceof  Object);//false

var a=[1,2,3];
console.log(a  instanceof  Object);//true

var a=[1,2,3];
console.log(a  instanceof  Array);//true

用instanceof 方法可以明显的把null类型排除掉,同时对于对象类型他们本身就都是对象所以当匹配Object的时候返回的自然是true。


那怎样区别array和object呢?

console.log(obj instanceof Object&& (toString.call(obj) !== “[object Array]”));

利用toString方法判断是否为数组


 

相关标签: typeof instanceof