我正在使用名为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)
会产生true
,responses.length
会产生0
。
这是什么东西?
整个骑士对象的完整控制台日志:https://gist.github.com/tylertrotter/be8da3e777c16a2b631d9de9fc94f70b
答案 0 :(得分:1)
是否有 这样的东西?不,每个数组都是这个。
Array
只是JS中的一种特殊类型的对象(如RegExp
或Date
个实例),它们可以为它们分配任意属性。当然,for循环只会考虑其.length
并迭代整数索引,但这并不能阻止对象包含任何内容。 console.log
通常会以您发现的样式显示此类数组。
但是应该注意滥用数组is considered a very bad practise。您应该向模块提交一个错误并告诉他们使用对象作为集合更好Map
s。