У меня есть объект, который выглядит так:
const obj = {
x: 1,
y: 2,
foo() {
return "foo";
},
get bar() {
return "bar";
}
}
Для простоты этот объект имеет только один метод получения, однако другие объекты могут иметь еще больше методов получения.
Есть ли простой способ получить свойства объекта так, чтобы он исключал все функции, а также все методы получения (методов)?
Мой желаемый результат:
const properties = ["x", "y"];
Я попытался использовать Object.keys()
, однако это дает все свойства, включая все методы. Я также попытался просмотреть Object.getOwnPropertyNames()
, однако это все равно включает все имена функций в результате.
Обратите внимание: Мне известно, что я могу отфильтровать получатели из результата getOwnPropertyNames()
, сохранив где-то свой собственный набор получателей и проверив, включено ли свойство в этоустановлен. Тем не менее, это не кажется мне хорошим решением, так как между набором и свойствами объекта будет зависимость. Мне также известно, что я могу установить для атрибута enumerable
метода значение false
. Однако это потребует от меня сканирования всех методов в моем объекте и ручного выполнения этого. Есть ли более простой способ, который мог бы сделать это автоматически для достижения желаемого результата?