作为数组传递的道具在Reactjs的子组件中作为对象类型获取

作为数组传递的道具在Reactjs的子组件中作为对象类型获取,reactjs,Reactjs,在我的ReactJS应用程序中,我的ParentComponent通过将一些道具作为 <ChildComponent val={["a1"]} sets={{}} /> 但在控制台里我得到了 val object sets object 为什么我在检查类型时将数组作为道具传递为对象?因为在表面下数组是对象(右接线),即如果您控制台。log(typeof[])将是对象 因此,有用的检查方法是: var isArr = val instanceof Array; var isArr

在我的ReactJS应用程序中,我的
ParentComponent
通过将一些
道具作为

<ChildComponent val={["a1"]} sets={{}} />
但在控制台里我得到了

val object
sets object

为什么我在检查类型时将数组作为道具传递为对象?

因为在表面下数组是对象(右接线),即如果您
控制台。log(typeof[])
将是
对象

因此,有用的检查方法是:

var isArr = val instanceof Array;
var isArr = Array.isArray(val);
但最可靠的方法是:

const isArray = Object.prototype.toString.call(val) == '[object Array]';

Object.prototype.toString.call(val)
是否支持非常旧版本的浏览器?或者哪个版本也支持旧版本?@Hareesh确实支持。事实上,这是保持数组检查完整性的最古老方法之一。数组的类型是对象。在JavaScript中,数组在技术上是对象;只是有特殊的行为和能力。例如,数组具有Array.prototype.length属性,该属性将返回数组中的元素数。更多信息:
const isArray = Object.prototype.toString.call(val) == '[object Array]';