当前位置: 首页 > news >正文

前端 JS 经典:判断数组的准确方法

前言:判断数组的方法有很多,但是最完美的只有一个。

1. Object.prototype.toString.call

通过 toString.call 方法来判断是否数组。

function isArray(obj) {return Object.prototype.toString.call(obj) === "[object Array]";
}

缺点:ES6 提供了一个知名符号[Symbol.toStringTag],可以指定 toString.call 的调用行文,再用这种方法就不准确了。

const obj = {[Symbol.toStringTag]: "abc",
};
Object.prototype.toString.call(obj); // [object abc]

2. instanceof

通过 instanceof 判断原型链。

function isArray(obj) {return obj instanceof Array;
}

缺点:可以通过 Object.setPrototypeOf 改变原型链的指向。

let obj = {};
Object.setPrototypeOf(obj, Array.prototype);
isArray({});

3. Array.isArray

ES6 提供的最完美的判断数组方法,底层是 C++代码。无法随意篡改。

function isArray(obj) {return Array.isArray(obj);
}

 

相关文章:

  • LLM主流开源代表模型
  • ethernet eth0: Could not attach to PHY
  • 家宽动态公网IP,使用docker+ddns 实现动态域名解析
  • 计算机视觉与模式识别实验2-2 SIFT特征提取与匹配
  • 云端数据提取:安全、高效地利用无限资源
  • 2024-5-13——腐烂的橘子
  • 在Spring Boot项目中使用Redisson实现延迟执行
  • java基础篇(1)
  • Shell编程实际应用
  • 深度学习-06-手动进行反向传播
  • [数据集][目标检测]RSNA肺炎检测数据集VOC+YOLO格式6012张1类别
  • 手机号脱敏
  • 【前缀“选区-” bat脚本】
  • 汽车IVI中控开发入门及进阶(二十二):video decoder视频解码芯片
  • 深度学习入门-第3章-神经网络
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • ECS应用管理最佳实践
  • Java深入 - 深入理解Java集合
  • Object.assign方法不能实现深复制
  • PV统计优化设计
  • Vue.js-Day01
  • vue脚手架vue-cli
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 程序员该如何有效的找工作?
  • 从0到1:PostCSS 插件开发最佳实践
  • 搭建gitbook 和 访问权限认证
  • 第2章 网络文档
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 技术胖1-4季视频复习— (看视频笔记)
  • 前端学习笔记之观察者模式
  • 深入浅出Node.js
  • 译自由幺半群
  • 正则表达式小结
  • 第二十章:异步和文件I/O.(二十三)
  • #define,static,const,三种常量的区别
  • #数据结构 笔记三
  • (day6) 319. 灯泡开关
  • (九)One-Wire总线-DS18B20
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (转)创业的注意事项
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .Mobi域名介绍
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net 提取注释生成API文档 帮助文档
  • .net6 webapi log4net完整配置使用流程
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .net打印*三角形
  • .net开发日常笔记(持续更新)
  • .net项目IIS、VS 附加进程调试
  • .Net组件程序设计之线程、并发管理(一)
  • .py文件应该怎样打开?
  • .vue文件怎么使用_vue调试工具vue-devtools的安装