为什么console.log()不显示Object.create的inheritance属性?

我在尝试利用基础对象上的Object.defineProperty()时遇到了挂断问题。 我想使用Object.create()从该对象inheritance属性,然后在派生对象中定义更多的属性(可以从中inheritance)。 我应该注意到,我正在node.js这个目标。

这是一个例子:

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

其中输出以下内容:

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

我认为console.log()会枚举inheritance的属性,以及我在派生对象上定义的属性prop3 。 看起来,它不会查找以这种方式定义的属性的原型层次结构。 那是对的吗?

我看着重写我的对象的toString()方法,但似乎console.log()不会调用。

  1. 我怎样才能得到logging的所有属性,而不必通过他们枚举?
  2. 这是一个有效的方式来实现inheritance?

编辑:

  1. 在node.js的库中是否有另外一个函数来完成这个工作并logginginheritance的属性?

Firebug logginginheritance的属性:

在这里输入图像描述

而Chrome则为您提供了包含inheritance属性的树视图:

在这里输入图像描述

你可以在可用的地方使用console.dir()

 console.dir(derived) 

它会在__proto__对象上显示对象的inheritance属性

编辑:似乎并没有显示在节点上