typeof和instanceof

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方法判断是否为数组


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值