Enumerating Object.keys() in node.js - strange issue

There is an issue with enumerating Object.keys() in node.js that I do not understand. With the following code:

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();

I get the following results on the console:

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

Could somebody explain where does an extra "tuple" come from in the second loop? While defined as function in Object.prototype, it is neither an own property of x object, nor included in names array.

I am using node.js version 0.8.20.

The first loop goes over the properties of x (Object.keys() returns only own properties), while the second one goes over the properties or the array names, including the ones up in the prototype chain.

Thanks to Jonathan Lonowski for clarifications.

I think what @Kuba mentioned above is not correct, but I can't down vote his answer.

Object.keys, Object.getOwnPropertyNames and other similar method would behave different sightly. Their behaviors are related to a property named enumerable.

I am going to dinner with my friends so I can only give you a helpful link illustrating it. So sorry.

https://developer.mozilla.org/en-US/docs/Enumerability_and_ownership_of_properties