📜  如何从 JavaScript 中对象自己的可枚举属性中获取函数属性名称数组?(1)

📅  最后修改于: 2023-12-03 15:37:54.293000             🧑  作者: Mango

如何从 JavaScript 中对象自己的可枚举属性中获取函数属性名称数组?

在 JavaScript 中,可以通过 Object.keys() 方法获取由指定对象的所有可枚举属性名称组成的数组。但是,如果对象中有函数属性,我们想获取函数属性的名称数组,可以采用以下方法:

const obj = {
  foo: 'bar',
  baz: function() {},
  qux: function() {}
};

const functionNames = Object.getOwnPropertyNames(obj).filter(function(property) {
  return typeof obj[property] === 'function';
});
console.log(functionNames); // ['baz', 'qux']

上面的代码中,我们使用 Object.getOwnPropertyNames() 方法获取对象的所有属性名称组成的数组,然后使用 Array.filter() 方法过滤出函数属性,最后得到函数属性的名称数组。

需要注意的是,Object.getOwnPropertyNames() 方法获取的属性名称包括可枚举和不可枚举的属性,如果要过滤掉不可枚举的属性,可以使用 Object.keys() 方法代替 Object.getOwnPropertyNames() 方法。

const obj = {
  foo: 'bar',
  baz: function() {},
  qux: function() {}
};

const functionNames = Object.keys(obj).filter(function(property) {
  return typeof obj[property] === 'function';
});
console.log(functionNames); // ['baz', 'qux']

上面的代码中,我们使用 Object.keys() 方法获取对象的所有可枚举属性名称组成的数组,然后使用 Array.filter() 方法过滤出函数属性,最后得到函数属性的名称数组。