如何在 JavaScript 中访问对象内所有嵌套对象的所有功能?

问题描述

我正在导入 [faker][1] 库并创建一个 method 以返回所有 [faker][1] 的 methods,如下所示:

const faker = require('faker')

const getmethods = obj => Object.getownPropertyNames(obj).filter((method) => typeof obj[method] === 'object')

console.log(getmethods(faker))

不过,我才刚到第一级 objects

[
  'locales','locale','localeFallback','deFinitions','fake','unique','mersenne','random','helpers','name','address','animal','company','finance','image','lorem','hacker','internet','database','phone','date','time','commerce','system','git','vehicle','music','datatype'
]

我想获得属于这些 methods 的所有 objects。 [1]:https://www.npmjs.com/package/faker

解决方法

感谢@VLAZ 的回答,我可以像这样使用 for ...in 弄清楚:

const faker = require('faker');

const getObjects = (obj) => {
  return Object.getOwnPropertyNames(obj).filter((method) => typeof obj[method] === 'object' || typeof obj[method] === 'function');
};

const getMethods = (object) => {
  const availableMethods = []; 
  for (const property in object) {
    availableMethods.push(...getObjects(object[property]));
  };

  return availableMethods;
};

getMethods(faker); // returns all methods in an array

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...