js之获取对象类型的几种方式

  1. 通过typeof
    typeof的所有返回值包括以下几种:
  • number
  • boolean
  • string
  • undefined
  • function
  • symbol
  • object
    对于基本类型或者函数,通过typeof很好判断,但是对于object类型,使用typeof就显得宽泛了。
  1. 通过instanceof
    instanceof的原理是,判断构造函数的原型是否在这个对象的原型链上。
    比如:

[1,2,3] instanceof Object // true
这是因为,[1,2,3]是一个Array类型实例,即,[1,2,3]的原型对象为Array.prototype,而Array.prototype这个对象中的一个内部指针(proto),即它的原型指针指向Object.prototype,因此Object.prototype就在[1,2,3]的原型链上,因此结果为true.

  1. 通过constructor
    我们知道,在一个实例的原型对象上有一个constructor属性,指向创建这个实例的构造函数,因此,我们可以通过oject.constructor来获取它的构造函数,也就是它所属的类型。

  2. 通过Object.prototype.toString()
    Object.prototype.toString()返回的是对象类型,格式为"[object Array]’,类似这样。但是这样返回的是Object.prototype的对象类型,即[object Object] . 如果想要用在每个特定的实例上,应该加上call或者apply方法,比如:Object.prototype.toString.call(obj)。这样,返回的就是obj的类型了。

> 需要注意的是:如果call或者apply里面的参数是一个数字,布尔值,或者字符串,那么返回的形式为:[object Number] [object Boolean] [object String]。这是为什么呢,因为,Object.prototype.toString()返回的是对象类型,当对基本类型的数字,布尔值和字符串进行判断时,其实质判断的是这三种类型的基本包装类型。也就是说,先把这三种基本类型转换为各自的基本包装类型,然后再进行判断。基本包装类型是对象
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值