你怎么看到当前在javascript中定义了哪些函数和变量?

时间:2010-03-26 20:44:00

标签: javascript function scope

在PHP中有一个函数,你可以在其中获得当前定义的用户定义函数的列表,JS中有类似的东西吗?

我正在尝试在Firefox 3中看到一个功能列表,并启用了Firebug。

= /到目前为止,所有答案都没有开箱即用

3 个答案:

答案 0 :(得分:3)

var funcs = []; 

for(var prop in window) {
  if(window.hasOwnProperty(prop) && typeof window[prop] === 'function') {
    if(window[prop].toString().indexOf("[native code]") === -1) {
      funcs.push(window[prop]);
    }
  }
}  

答案 1 :(得分:1)

没有跨浏览器方法。在Internet Explorer中,已定义的变量和函数成为window对象的成员,但不可枚举。您可以使用funcName in window检查它们的存在,但不能使用for...in语句枚举它们。

定义为窗口对象的属性的变量是可枚举的:

function someFunc () {} // is not enumerable
window.someOtherFunc = function () {} // is enumerable

编辑 JScript的实施(惊讶,惊讶)实际上是错误的,如this blog post by Eric Lippert中所述。

但我认为你不想用window.为所有变量添加前缀,是吗?有关在某些浏览器中有效的方法,请参阅Josh Stodola's answer

答案 2 :(得分:1)

可能过于简单,但如果启用了Firebug,请将window记录到控制台。单击它将枚举所有window个成员。如果您需要快速,可视的列表,这将对您有所帮助,但如果您对所有window成员采取行动,则需要使用评论中发布的其他方法之一。

for(var i in window)之类的东西会让你走上正确的轨道。