Object.keys(): собственные перечисляемые ключи
Object.keys возвращает массив собственных перечисляемых строковых ключей объекта.
Назначение
Object.keys возвращает массив собственных перечисляемых строковых ключей объекта.
Как это работает
Унаследованные свойства и символьные ключи не включаются. Метод описывает конкретный набор свойств, поэтому не является полным перечислением всего, что доступно через объект.
Пример
const record=Object.create({inherited:1});
record.title='HTML';
record[Symbol('meta')]=2;
console.assert(JSON.stringify(Object.keys(record))==='["title"]');
Что должно получиться
Массив содержит только title. Пример отделяет собственные строковые перечисляемые свойства от унаследованных и символьных данных.
Граница применения и частая ошибка
Не используйте Object.keys как проверку полномочий или корректности произвольного объекта. Схема данных должна отдельно определять допустимые имена и типы значений.
Самостоятельная проверка
Добавьте унаследованное свойство через прототип и сравните результат с обычным собственным свойством. Затем добавьте Symbol и убедитесь, что он не появился в keys.
JavaScript в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.