js 判断对象为数组还是对象的几种方法

1、toString 方式

Object.prototype.toString.call(val) === '[object Object]' // true 代表为对象

Object.prototype.toString.call(val) === '[object Array]' // true 代表为数组

2、constructor 方式

val?.constructor === Object // true 代表为对象

val?.constructor === Array // true 代表为数组

3、Object.getPrototypeOf 方式

Object.getPrototypeOf(val) === Object.prototype // true 代表为对象

Object.getPrototypeOf(val) === Array.prototype // true 代表为数组

4、Array.isArray 方法

Array.isArray(val) // true 代表为数组

5、对于typeof 和 instanceof 并不能完全判断一个值为对象

typeof 的取值有:

"undefined"——如果这个值未定义;
"boolean"——如果这个值是布尔值;
"string"——如果这个值是字符串;
"number"——如果这个值是数值;
"object"——如果这个值是对象(包括数组)或null;
"function"——如果这个值是函数;
"symbol"——如果这个值是Symbol;
instanceof 操作符对于数组和对象都返回 true
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值