【问题标题】:Is there such a thing as an array/object hybrid?有没有像数组/对象混合这样的东西?
【发布时间】:2016-11-07 23:45:15
【问题描述】:

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

这是什么东西?

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

【问题讨论】:

  • 这是 JavaScript 问题还是骑士问题?我想他们猴子修补了 .toString 方法
  • 能否请您粘贴以下输出:console.log(responses)
  • @webdeb 我已经添加了整个对象。 responses 从第 29 行开始。
  • @tylertrotter 在 horseman 找到了你的要旨和问题,很好理解

标签: javascript arrays node.js object


【解决方案1】:

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

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

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

【讨论】:

  • 好吧,我不知道你可以这样滥用数组。我会提交一个错误,看看他说什么。
猜你喜欢
  • 2013-07-30
  • 2014-09-29
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多