Неперечислимые свойства, отображаемые в цикле for ... in - PullRequest
0 голосов
/ 28 мая 2020

Насколько я понимаю, оператор for ...in выполняет итерацию по всем перечисляемым свойствам объекта (источник: MDN )

Тогда, почему глобальный объект navigator в спецификации, например, отвечает следующим образом:

for (prop in navigator) { 
  console.log(prop);
}

//OUTPUT:
//vibrate 
//javaEnabled
//....

Хотя все свойства, напечатанные в консоли вернуть false против document.propertyIsEnumerable('prop'). Что я здесь не понимаю?

1 Ответ

3 голосов
/ 28 мая 2020

Процитировать из MDN :

Метод propertyIsEnumerable () возвращает логическое значение, указывающее, является ли указанное свойство перечислимым и является ли собственное свойство объекта .

Как вы можете показать с помощью Object.getPrototypeOf(navigator), некоторые свойства не принадлежат самому навигатору, а унаследованы от его прототипа.

const example = Object.create({ you: "see" });

for(let key in example) console.log(`enumerable key: ${key}`);

console.log(`'you' is own and enumerable: ${example.propertyIsEnumerable("you")}`);
console.log(`'you' is own property: ${example.hasOwnProperty("you")}`);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...