在 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/