Для чего нужен перечисляемый аргумент в Object.create? - PullRequest
6 голосов
/ 28 января 2012

В каких случаях Object.create вы хотите установить enumerable на true?

1 Ответ

10 голосов
/ 28 января 2012

Свойство объекта должно быть перечисляемым, если вы хотите иметь доступ к нему при выполнении итерации по всем свойствам объекта.Пример:

var obj = {prop1: 'val1', prop2:'val2'};
for (var prop in obj){
  console.log(prop, obj[prop]);
}

В этом типе реализации enumerable всегда имеет значение true, это даст вам вывод:

prop1 val1
prop2 val2

Если бы вы использовали Object.create () какИтак:

obj = Object.create({}, { prop1: { value: 'val1', enumerable: true}, prop2: { value: 'val2', enumerable: false} });

Ваш цикл for будет обращаться только к prop1, но не к prop2.Используя Object.create (), свойства устанавливаются с enumerable = false по умолчанию.

...