为什么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()不会调用。
- 我怎样才能得到logging的所有属性,而不必通过他们枚举?
- 这是一个有效的方式来实现inheritance?
编辑:
- 在node.js的库中是否有另外一个函数来完成这个工作并logginginheritance的属性?
Firebug 会logginginheritance的属性:
而Chrome则为您提供了包含inheritance属性的树视图:
你可以在可用的地方使用console.dir()
console.dir(derived)
它会在__proto__
对象上显示对象的inheritance属性
编辑:似乎并没有显示在节点上