javascript - 是否存在数组/对象混合体之类的东西?

标签 javascript arrays node.js object

我正在使用一个名为 horseman 的 npm 模块这基本上是 Node.js 的 PhantomJS。当我控制台记录骑士对象的内容时,它包含有关当前页面的各种数据。所有这些数据中都包含页面所有资源及其 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

最佳答案

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

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

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

关于javascript - 是否存在数组/对象混合体之类的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38215276/

相关文章:

javascript - 将 ByteArray 从 Knockout.js 发布到 Web 服务

java - 如何从 Controller 以可接受的格式向 Highstock 发送数据?

javascript - 基于一个数组对多个数组进行排序

node.js - 无法安装 node-postgres

javascript - 如何使用 css 控制此 js 脚本中的嵌入文本

javascript - 如何将 javascript 事件从一个元素传递到另一个元素?

c++ - 2个数组相乘的函数

java - 如何进行双数组枚举查找

javascript - 使用 browserify 创建的捆绑文件中的现有模块对象

node.js - 使用 Node.js 无需访问命令提示符