有阵列/对象混合这样的东西吗?

时间:2016-07-06 01:45:26

标签: javascript arrays node.js object

我正在使用名为horseman的npm模块,它基本上是PhantomJS for Node。当我控制日志记录骑士对象的内容时,它具有关于当前页面的各种数据。所有这些数据中都包含一个页面的所有资源列表及其http状态代码,如下所示:

responses: [ 'http://tylertrotter.com/': 301,
  'http://www.tylertrotter.com/': 200,
  'http://www.tylertrotter.com/css/main.css': 200, 
  ...
]

它看起来像一个数组/对象混合,我以前从未遇到过类似的东西。 Array.isArray(responses)会产生trueresponses.length会产生0

这是什么东西?

整个骑士对象的完整控制台日志:https://gist.github.com/tylertrotter/be8da3e777c16a2b631d9de9fc94f70b

1 个答案:

答案 0 :(得分:1)

是否有 这样的东西?不,每个数组都是这个。

Array只是JS中的一种特殊类型的对象(如RegExpDate个实例),它们可以为它们分配任意属性。当然,for循环只会考虑其.length并迭代整数索引,但这并不能阻止对象包含任何内容。 console.log通常会以您发现的样式显示此类数组。

但是应该注意滥用数组is considered a very bad practise。您应该向模块提交一个错误并告诉他们使用对象作为集合更好Maps