📜  列出对象 js 中的所有函数 - Javascript (1)

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

列出对象 js 中的所有函数

在 JavaScript 中,对象是一组属性和方法的集合。其中方法就是对象的函数。在本文中,我们将介绍如何列出对象 js 中的所有函数。

1. 使用 Object.keys 和 typeof

我们可以使用 Object.keys 方法获取对象的所有属性,然后使用 typeof 运算符过滤出函数类型的属性。下面是一个例子:

const obj = {
  name: 'John',
  age: 25,
  sayHello: function() {
    console.log('Hello, ' + this.name + '!');
  },
  sayAge: function() {
    console.log('I am ' + this.age + ' years old.');
  }
};

const functionNames = Object.keys(obj).filter(key => typeof obj[key] === 'function');

console.log(functionNames);
// output: ['sayHello', 'sayAge']

这个例子中,我们定义了一个对象 obj,包含了两个方法 sayHello 和 sayAge。我们使用 Object.keys 方法获取对象的所有属性 key,并使用 filter 方法过滤出函数类型属性。最后,我们得到一个包含方法名的数组 functionNames。

2. 使用 Object.getOwnPropertyNames 和 typeof

除了 Object.keys 方法外,我们也可以使用 Object.getOwnPropertyNames 方法来获取对象的所有属性,获取到属性数组后还是用 filter 方法过滤出函数类型属性,再返回函数名数组。这种方法比第一种方法更为详细,因为它能获取所有属性并不止仅限于属性名。

const obj = {
  name: 'John',
  age: 25,
  sayHello: function() {
    console.log('Hello, ' + this.name + '!');
  },
  sayAge: function() {
    console.log('I am ' + this.age + ' years old.');
  }
};

const propertyNames = Object.getOwnPropertyNames(obj);
const functionNames = propertyNames.filter(key => typeof obj[key] === 'function');

console.log(functionNames);
// output: ['sayHello', 'sayAge']

这个例子中,我们定义了一个对象 obj,包含了两个方法 sayHello 和 sayAge。我们使用 Object.getOwnPropertyNames 方法获取对象所有的属性名,并使用 filter 方法过滤出函数类型属性。最后,我们得到一个包含方法名的数组 functionNames。

3. 使用 for...in 循环

我们也可以使用 for...in 循环遍历对象的所有属性,然后判断属性是否为函数类型。这种方法同样可以获取到对象的所有属性,包括可枚举和不可枚举的属性。

const obj = {
  name: 'John',
  age: 25,
  sayHello: function() {
    console.log('Hello, ' + this.name + '!');
  },
  sayAge: function() {
    console.log('I am ' + this.age + ' years old.');
  }
};

const functionNames = [];

for (let key in obj) {
  if (typeof obj[key] === 'function') {
    functionNames.push(key);
  }
}

console.log(functionNames);
// output: ['sayHello', 'sayAge']

这个例子中,我们定义了一个对象 obj,包含了两个方法 sayHello 和 sayAge。我们使用 for...in 循环遍历对象的所有属性 key,并使用 if 语句过滤出函数类型属性。最后,我们将函数名 key 添加到数组 functionNames 中。

总结

在 JavaScript 中,我们可以使用 Object.keys 和 Object.getOwnPropertyNames 方法获取对象的属性名,并使用 filter 方法过滤出函数类型属性。我们也可以使用 for...in 循环遍历对象的所有属性,并判断属性是否为函数类型。这三种方法都可以列出对象 js 中的所有函数。