繁体   English   中英

获取Node.js中Class的可用函数列表

[英]Obtaining a list of available functions for a Class in Node.js

我试图找到一个干净,简单的方法来简单地使用命令行获取Node.js中类的可用函数列表。

基于之前的网络搜索,我偶然发现了Object.getOwnPropertyNames()但看起来这个函数不一致,或者我不明白为什么它适用于某些类但不适用于其他类。

让我们通过一个例子,也许有人可以提供帮助。 目前,节点-v为此示例输出v4.4.5。

首先,假设我想获得Math类的函数列表。 从节点控制台,这很好用,我得到:

[root@localhost /]# node
> Object.getOwnPropertyNames(Math)
[ 'E',
  'LN10',
  'LN2',
  'LOG2E',
  'LOG10E',
  'PI',
  'SQRT1_2',
  'SQRT2',
  'random',
  'abs',
  'acos',
  'asin',
  'atan',
  'ceil',
  'exp',
  'floor',
  'log',
  'round',
  'sqrt',
  'atan2',
  'pow',
  'max',
  'min',
  'imul',
  'sign',
  'trunc',
  'tanh',
  'asinh',
  'acosh',
  'atanh',
  'hypot',
  'fround',
  'clz32',
  'cbrt',
  'cos',
  'sin',
  'tan',
  'sinh',
  'cosh',
  'log10',
  'log2',
  'log1p',
  'expm1' ]
>

凉。 这样可行。

现在,由于Node.js更多地是关于服务器端编程,让我们看看同样的东西是否适用于几乎每个“hello world”类型的Node.js示例中使用的公共类: http.Server

让我们尝试同样的事情:

> Object.getOwnPropertyNames(http.Server)
[ 'length', 'name', 'prototype', 'super_' ]

嗯....将此与此处的文档进行比较,似乎缺少像server.close()server.listen()这样的基本内容。 进一步看一下这个文档,这个类是net.Server的子类,所以我可能要查看该类的方法。 让我们看看是否有效:

> Object.getOwnPropertyNames(net.Server)
[ 'length', 'name', 'prototype', 'super_' ]

嗯......如果我们与net.Server的文档进行比较,我们就会遗漏像server.address()server.getConnections()等基本函数。

任何人都可以帮助我理解:

(a)为什么getOwnPropertyNames似乎显示某些类的所有方法而不显示其他类,并且......(b)是否有另一种“官方”方式来简单地列出Node.js中对象的可用函数而无需阅读API文档获得这样的列表?

如果你查看getOwnPropertyNames文档 ,你会看到:

如果只想要可枚举的属性,请参阅Object.keys()或使用for ... in循环(尽管请注意,这将返回直接在该对象上找到的可枚举属性,但也会返回对象的原型链 ,除非后者使用hasOwnProperty()过滤。

这是说getOwnPropertyNames()Object.keys()只会返回对象本身的可枚举属性,并且不会提供有关对象原型的任何信息。

因此,似乎没有内置函数来实现您想要的功能,因此您必须自己编写代码。 例如:

for (var prop in obj) {
    console.log('obj.' + prop + ' = ' + obj[prop]);
}

注意:您可以创建自己的实用程序库,包含此想法,以便将其包含在要运行它的任何项目中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM