node.js - 在 Node.js 中枚举 Object.keys() - 奇怪的问题

标签 node.js

在 Node.js 中枚举 Object.keys() 存在一个我不明白的问题。使用以下代码:

Object.prototype.tuple = function() {
  var names = Object.keys(this);
  console.log("Dump of names:");
  console.log(names);
  console.log("FOR loop using indexes:");
  for (var k = 0; k < names.length; k++)
  {
    console.log(names[k]);
  }
  console.log("FOR loop using enumeration:");
  for (var z in names)
  {
    console.log(z);
  }
  return this;
};

var x = {a:0, b:0, c:0}.tuple();

我在控制台上得到以下结果:

Dump of names:
[ 'a', 'b', 'c' ]
FOR loop using indexes:
a
b
c
FOR loop using enumeration:
0
1
2
tuple

有人可以解释第二个循环中额外的“元组”来自哪里吗?虽然在 Object.prototype 中定义为函数,但它既不是 x 对象自己的属性,也不包含在 names 数组中。

我使用的是 Node.js 版本 0.8.20。

最佳答案

第一个循环遍历 x 的属性(Object.keys() 仅返回自己的属性),而第二个循环遍历属性或数组 名称,包括原型(prototype)链中的属性。

感谢Jonathan Lonowski的澄清。

关于node.js - 在 Node.js 中枚举 Object.keys() - 奇怪的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17484078/

相关文章:

node.js - npm 安装 orientjs fatal error 。 node_version.h 在哪里?

node.js - 找不到jade-bootstrap安装文件

node.js - 运行现有数据流模板 GCS_Text_Bigquery 时出现错误 : The template parameters are invalid. Google Cloud 函数

javascript - 三元运算符的 if 条件不返回 true 或 false

javascript - 在 Java 项目中使用 JavaScript 字符串文字

javascript - 如何使用 Node.js 在 Heroku 中绑定(bind)端口

javascript - 在 div 内显示 JSON 内容

javascript - 单击 React Native 中的项目时如何关闭模式并从 flatlist 返回值?

javascript - 将多个结果插入到express.js路由中的req对象中

node.js - 使用 Express 中间件进行每个请求模块配置?