nodejs — util.inspect разъяснение по showHidden

#javascript #node.js

#javascript #node.js

Вопрос:

В документации nodejs для функции util.inspect указано, что «Если showHidden имеет значение true, то также будут показаны неисчислимые свойства объекта».

Относятся ли неперечисляемые свойства только к прототипам? Или есть другие неперечисляемые свойства, которые я не рассматривал?

Ссылка на документацию, о которой идет речь:http://nodejs.org/docs/v0.4.8/api/util.html#util.inspect

Ответ №1:

Перечислимые свойства и свойства прототипа не связаны. Просто так получилось, что большинство (все?) свойств прототипа на собственных объектах являются неисчислимыми.

Чтобы показать, что свойства прототипа и экземпляра могут быть как перечислимыми, так и неперечисляемыми:

Вы можете создавать неперечисляемые свойства для своих собственных объектов с помощью defineProperty() :

 var obj = {};
Object.defineProperty(obj, 'a', {
    value: 1,
    enumerable: false
});
  

С другой стороны, свойства прототипа, которые вы добавляете (неродные), по умолчанию перечислимы, даже если вы добавляете их к прототипам собственных объектов:

 Object.prototype.a = 1;
var obj = {};

// Will log "a"
for (var i in obj) {
    console.log(i);
}