JS判断数组、对象

Object.prototype.toString.call()

优点:可以检测所有基本数据类型,即使是 null和defined
缺点:不能精准判断自定义对象,对于自定义对象只会返回[object Object]
Object.prototype.toString.call() 常用于判断浏览器内置对象

  1. 每一个继承自Object 的对象都有toString方法,如果该方法没有被重写的话,就会返回[Object type](其中type为对象的类型)
  2. Object类型的对象使用toString时,会直接返回内容的字符串。
const an = ['Hello','An'];
an.toString(); // "Hello,An"

因此如果非Object类型的对象需要使用toString来判断对象类型时,需要使用call或者apply方法来改变toString方法的执行上下文

const an = ['Hello','An'];
Object.prototype.toString.call(an); // "[object Array]"

Array.isArray()

缺点:只能判别数组

总结

Array.isArray()是ES5新增的方法,当不存在 Array.isArray() ,可以用 Object.prototype.toString.call() 判断

参考博客

前端面试题1:Object.prototype.toString.call() 、instanceof 以及 Array.isArray()三种方法判别数组的优劣和区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值