从js对象获取更多信息

时间:2013-02-11 14:27:48

标签: javascript

我可以通过这样的方式得到属于特定js对象的所有函数和参数的列表: -

  

x = IDBKeyRange.only(43); for(x中的每个){console.log(每个,   X [每]); }

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

  

我可以通过这样的方式得到属于特定js对象的所有函数和参数的列表: -

这将为您提供对象的可枚举属性,这些属性可能不包含很多内容。例如,如果你在数组上执行此操作,则不会看到push,因为它是一个非可枚举的属性(在这种情况下是数组的原型,但它适用于自己的属性和继承的属性)。 / p>

  

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

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

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

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

答案 2 :(得分:0)

您可以在Web浏览器中运行调试模式。并使用jquery限定符来访问您的对象。