В 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"]