1

我可以通过执行以下操作来获取属于特定 js 对象的所有函数和参数的列表:-

x = IDBKeyRange.only(43); for ( var each in x ) { console.log(each, x[each]); }

有什么方法可以获得有关函数的更多信息,例如每个函数接受的参数数量等?

4

3 回答 3

3

函数的length属性给出了声明中形式参数的数量,尽管这不一定与函数接受的参数数量相同。除非通过一些静态/动态分析,否则无法真正弄清楚。

函数的.toString()方法返回源代码。(这不是任何标准,而是我所知道的所有环境都以这种方式工作。当然,您无法获得“内置”功能的来源。)还试图使除实验/诊断/调试代码之外的任何东西都工作通过在运行时检查函数源代码可能表明一些严重的设计问题:-)

于 2013-02-11T14:29:21.177 回答
2

我可以通过执行以下操作来获取属于特定 js 对象的所有函数和参数的列表:-

这将为您提供对象的可枚举属性,其中可能不包括很多东西。例如,如果您在数组上执行此操作,您将看不到push,因为它是一个不可枚举的属性(在这种情况下是数组的原型,但它同时适用于自己的属性和继承的属性)。

有什么方法可以获得有关函数的更多信息,例如每个函数接受的参数数量等?

您可以使用函数实例的length属性获取函数的数量(声明参数的数量) 。例如:

console.log("The arity of [].push is " + [].push.length);

但是,重要的是要记住,JavaScript 函数可以通过argumentsobject接受可变数量的参数,因此 arity 可能无法为您提供完整的故事。

于 2013-02-11T14:29:53.113 回答
0

you can run debug mode in web browser. and use jquery qualifier to acces to your object.

于 2013-02-11T14:42:38.893 回答