我在尝试利用Object.defineProperty()
基础对象时遇到了挂断。我想使用 继承该对象的属性,Object.create()
然后在派生对象中定义更多属性(可以从那里继承)。我应该注意,我的目标是 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() 会枚举继承的属性,以及prop3
我在派生对象上定义的属性。它似乎不会查找以这种方式定义的属性的原型层次结构。那是对的吗?
我查看了覆盖toString()
对象的方法,但似乎 console.log() 没有调用它。
- 如何在无需枚举的情况下记录所有属性?
- 这是实现继承的有效方法吗?
编辑:
- node.js 的库中是否还有另一个函数可以完成这项工作并记录继承的属性?