Почему console.log () не показывает унаследованные свойства от Object.create?
Я сталкиваюсь с зависанием при попытке использовать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? библиотеки, которые будут выполнять работу и регистрировать унаследованные свойства?