Сергей, советую изучить Типы данных JavaScript и с

Сергей, советую изучить Типы данных JavaScript и структуры данных. Массив (Array) - это не самостоятельный примитивный тип, а производный от Object.

При этом Object и Array - это уже существующие объекты и они имеют самостоятельные методы (так же, как и объект Math имеет свои методы типа max, floor, random и т.п., часть из которых вы наверняка уже встречали ранее, например в этом и этом уроках).

А привычное нам объявление переменных чаще всего является просто синтаксическим сахаром, например:

И вот методы этих объектов (Array, Object, Number, Math и т.п.) могут быть использованы просто как самостоятельные функции для определенных задач. К примеру метод Array.isArray(variables) позволяет проверить является ли переменная массивом (typeof нам в этом не поможет, потому что typeof {} === "object" и typeof [] === "object").

А вот метод Object.freeze() вы наверняка недавно встречали в этом уроке: Предотвращение мутации объектов. При этом, как я там писал в замечании, это работает не только с объектами, но и с массивами (что и есть тоже суть объекты).

Так вот, метод Object.keys() - это специальный метод, чтобы взять все ключи объекта и вернуть их в новом массиве. Напомню: суть объекта - это Структура Ключ-Значение. К примеру:

Мы видим здесь у объекта три ключа (имена свойств) и по ним три значения. Вот в результате Object.keys(obj) мы получим массив со всеми этими ключами, то есть ['key1,' 'key2', 'key3'].

А есть еще Object.values(), и он работает так же, только возвращает не ключи, а значения.