美文网首页
JS数组类型检测

JS数组类型检测

作者: Ving | 来源:发表于2023-09-09 23:35 被阅读0次

假定一个数组:

const arr = [1, 2, 3]

方式一

通过 Object.prototype.toString

function isArray(arr) {
  Object.prototype.toString.call(arr) === '[object Array]'
}

console.log(isArray(arr)) // true

缺点:利用 toStringTag 更改字符值,可造成误判

const obj = {
  [Symbol.toStringTag]: 'Array'
}

console.log(isArray(obj)) // true

console.log(Object.prototype.toString.call(obj)) // [object Array]

方式二

通过 instanceof

function isArray(arr) {
  return arr instanceof Array
}

console.log(isArray(arr)) // true

缺点:
1、通过** setPrototypeOf**更改原型,可造成误判

const obj = {}

Object.setPrototypeOf(obj, Array.prototype)

console.log(isArray(obj)) // true

2、在iframe环境构造,会存在误判

/** 获取页面上的iframe */
const iframe = document.querySelect('iframe')

/** 获取iframe环境下的构造函数 */
const Array2 = iframe.content Window.Array

/** 创建数组 */
const arr2 = new Array2()

console.log(isArray(arr2)) // false

方式三(推荐)

通过 Array.isArray()

console.log(Array.isArray(arr)) // true

// 检测方式二中的obj
console.log(isArray(obj)) // false

// 检测方式三中的arr2
console.log(isArray(arr2)) // true

原理:通过检测是否经过Array的构造函数 f Array() { native code}

相关文章

  • Array 检测

    一般在js里,我们一般使用typeof 、instanceof进行类型检测,例如:检测某个对象是否为数组: if ...

  • 前端Js常见的数组函数集合

    前端Js常见的数组函数集合 1、instanceof() : 检测一个对象是否是数组(用来对付复杂数据类型) va...

  • js 数组的类型检测与转换

    Array.isArray() **用于确定传递的值是否是一个 [Array] Array.from()方法就是将...

  • 数组检测

    检测是否是数组: 数组转字符串: 字符串转换数组: js对象转换成js字符串: js字符串转换成js对象:

  • Js类型相关总结

    Js的基本数据类型 复杂数据类型 类型检测 typeof 检测检测原理是根据变量存储时低位 instanceof检...

  • js对象数组的深拷贝方法以及其他方法

    js判断数据类型是否为对象 js判断数据类型是否为数组

  • js类型检测

    比较常见的类型检测 typeof 注意返回的是字符串instantOf 而实际开发的过程中比较好用的是 Objec...

  • JS类型检测

    一、js类型分类 js中数据类型可分为两大类: 原始类型:Number、String、Boolean、Null、U...

  • 【JS】类型检测

    前言 js 中的类型检测也是很重要的一部分,所以说这篇文章我们就来讲一下怎么对 JavaScript 中的基本数据...

  • js类型检测

    常见的检测方法 1、typeof value typeof返回数据类型的字符串例如:"number"、"strin...

网友评论

      本文标题:JS数组类型检测

      本文链接:https://www.haomeiwen.com/subject/riojvdtx.html