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

本文深入探讨JavaScript中不同类型检测的方法,包括typeof、instanceof、constructor和Object.prototype.toString,揭示每种方法的工作原理及其应用场景,帮助开发者更准确地识别变量类型。
部署运行你感兴趣的模型镜像
  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()返回的是对象类型,当对基本类型的数字,布尔值和字符串进行判断时,其实质判断的是这三种类型的基本包装类型。也就是说,先把这三种基本类型转换为各自的基本包装类型,然后再进行判断。基本包装类型是对象

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值