前言:
当前同学们对“判断是不是数组类型”大体比较关怀,我们都需要学习一些“判断是不是数组类型”的相关文章。那么小编在网络上搜集了一些对于“判断是不是数组类型””的相关文章,希望各位老铁们能喜欢,同学们一起来了解一下吧!由浅入深。
之前谈的是数组的创建,下面是题目回顾:
这期就谈谈数组类型:
该如何判断一个变量属于数组类型呢?
先来一道简单的题目测试一下 ——
题目中展示了三种判断数组类型的方法,分别是:
Array.isArray(arr) === truearr instanceof Arrayarr.constructor === Array
难道上面的方法就能准确地判断一个变量属于数组类型吗?
非也。
根据题目解析,有两种方法是从原型链上进行判断的,假如我们将原型链打断呢?
上述的两种方法便失效了。
不止是使用 arr.__proto__ = null 能打断原型链,还存在另外一种场景,那就是 iframe:
由于 iframe 和页面的原型链并不共享,页面中的数组引用地址和 iframe 中的数组引用地址不同,所以通过原型链来判断的方法会失效。
在 ES5 中新增的 Array.isArray() 方法可以避免上述两种情况所带来的误判。
通过查看 Array.isArray() 的 polyfill,其中的核心判断是 ——
Object.prototype.toString.call(arg) === '[object Array]'
在不支持 ES5 的浏览器上,这种方法也可以较严格地判断究竟一个变量是否属于数组类型。
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #判断是不是数组类型