判断数组的 4 种方法:`Array.isArray` vs `instanceof` vs `toString` vs `constructor`

数组检测的四种经典方法:Array.isArray vs instanceof vs toString vs constructor —— 一场深入浅出的技术讲座 各位开发者朋友,大家好!今天我们来聊一个看似简单、实则非常值得深挖的话题:如何准确判断一个变量是否为数组? 在 JavaScript 中,我们经常需要对数据类型进行判断。尤其是在处理用户输入、API 返回值或跨域通信时,你可能会遇到各种“伪装成数组”的对象——比如类数组对象(arguments、NodeList)、不同窗口/iframe中的数组实例,甚至一些自定义构造函数创建的对象。 如果你只用一种方式去判断数组,很可能掉进坑里。今天我们就从四个主流方法出发,逐一剖析它们的原理、适用场景和潜在陷阱,并给出最佳实践建议。 一、背景知识:JavaScript 中的“类型”与“原型链” 在开始之前,请先理解几个核心概念: 概念 含义 typeof 只能区分基本类型(string、number、boolean、undefined、symbol、object),无法区分对象的具体子类型(如 Array、Date、RegExp) 原型链 …