【问题标题】:How to find out if an object is an array in javascript?如何判断一个对象是否是javascript中的一个数组?
【发布时间】:2019-02-11 08:44:06
【问题描述】:

在浏览“W3Schools”上的 javascript 教程时,我发现这段代码解释了如何找出对象是否为数组。

function isArray(myArray) {
    return myArray.constructor.toString().indexOf("Array") > -1;
}

我不明白那条特定的行是如何执行的。

Link to W3School's page in question

【问题讨论】:

  • 你试过什么?也许从分解函数开始,看看每个方法或属性包含什么。

标签: javascript arrays constructor type-conversion


【解决方案1】:

即使这个问题已经接受了关于正确使用Array.isArray()的答案

问题是关于执行 W3Schools 中的特定代码,因此出于教育原因,代码示例中发生了什么。

myArray.constructor 是对对象构造函数的引用。更多Link

考虑到这一点,我们可以继续:

myArray.constructor.toString()

会变成

函数数组(){ [本机代码] }

函数indexOf 将返回字符串序列在其他字符串序列中的位置。如果找到我们正在寻找的字符串,它将返回int 位置。如果不是 indexOf 将返回 -1。

函数可以描述为如果“数组”在对象的字符串化构造函数中的位置大于-1,则对象为数组。

希望这会有所帮助。

【讨论】:

  • 星号*在做什么?
  • W3Schools 示例中没有 * 字符。 link 我认为要么是我不知道的语法,要么是尝试设置有问题的文本样式。
  • 编辑了问题,删除了 asterix'。
  • W3Schools 正确解释了旧版浏览器 (IE Array.isArray()。有问题的代码也适用于这些旧版浏览器。
猜你喜欢
  • 2018-05-06
  • 1970-01-01
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多