Why does console.log() not show inherited properties from Object.create?

I am running into a hangup while trying to leverage Object.defineProperty() on a base object. I want to inherit properties from that object, using Object.create(), and then define more properties in the derived object (which may be inherited from there). I should note that I am targetting this at node.js.

Here's an example:

var Base = {};

Object.defineProperty(Base, 'prop1', {
    enumerable:true,
    get:function(){ return 'prop1 value';}
});

Object.defineProperty(Base, 'prop2', {
    enumerable:true,
    value : 'prop 2 value'
});

Object.defineProperty(Base, 'create', {
    value:function(){
        return Object.create(Base);
    }
});

console.log(Base);

var derived = Base.create();

Object.defineProperty(derived, 'prop3', {
    enumerable:true,
    value:'prop 3 value'
});

console.log(derived);

Which outputs the following:

{ prop1: [Getter], prop2: 'prop 2 value' }
{ prop3: 'prop 3 value' }

I thought that console.log() would enumerate the inherited properties, as well as the property prop3 that I defined on the derived object. It would seem that it does not look up the prototype hierarchy for properties defined in this way. Is that correct?

I looked at overriding the toString() method for my object, but it seems that console.log() does not call that.

  1. How can I get all properties logged without having to enumerate through them?
  2. Is this a valid way to implement inheritance?

EDIT:

  1. Is there another function in node.js' libraries that would do the job and log the inherited properties?

you can use console.dir() where available

console.dir(derived) 

and it'll show the inherited properties of your object on the __proto__ object

Edit : doesnt seem to show up on node though

Firebug does log the inherited properties:

enter image description here

while Chrome gives you a tree-view which includes the inherited properties:

enter image description here