Методы получения всех свойств объекта в JavaScript с использованием оператора расширения

В JavaScript три точки (…) называются оператором распространения. Хотя он не обеспечивает прямого получения всех свойств объекта, для достижения этой цели его можно использовать в сочетании с другими методами.

Один из методов получения всех свойств объекта в JavaScript — использование метода Object.keys(). Он возвращает массив имен собственных перечислимых свойств данного объекта. Вот пример:

const obj = { foo: 1, bar: 2, baz: 3 };
const propertyNames = Object.keys(obj);
console.log(propertyNames); // Output: ["foo", "bar", "baz"]

Другой метод — использование цикла for...in. Он перебирает все перечислимые свойства объекта, включая унаследованные. Вот пример:

const obj = { foo: 1, bar: 2, baz: 3 };
for (let prop in obj) {
  console.log(prop); // Output: "foo", "bar", "baz"
}

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

const obj = { foo: 1, bar: 2 };
const nonEnumerableProperties = Object.getOwnPropertyNames(obj);
const allProperties = [...nonEnumerableProperties, ...Object.keys(obj)];
console.log(allProperties); // Output: ["foo", "bar"]