使用Chrome DevTools控制台以编程方式访问功能范围

时间:2014-09-04 18:12:46

标签: javascript google-chrome scope google-chrome-devtools

当我打开Chrome(v35)DevTools并检查对象时,控制台可以向我显示嵌套在函数中的东西,包括标记为'""函数范围"。

例如,在查看stackoverflow.com时,我可以看到包含另一个名为$的函数的全局Callbacks对象。与Callbacks一样,$的功能范围包含ClosureGlobal

screenshot of Chrome DevTools console

  • 问题1:直接嵌套在函数中的某个命名对象与函数范围内的闭包中包含的某个对象有什么区别?
  • 问题2:如何在控制台中以编程方式引用功能范围? window.$.Callbacks.???chrome.function???(window.$.Callbacks)

我问的原因是因为我正在寻找内存泄漏并且想要搜索功能中的对象'基于对象类型和属性名称的闭包。

1 个答案:

答案 0 :(得分:4)

  

直接嵌套在函数中的某个命名对象与函数范围内的闭包中包含的某个对象有什么区别?

直接与函数嵌套的对象是函数对象的属性。例如,$.Callback具有.length属性,其值为1,它具有.prototype属性,它确实从{{1}继承(__proto__)等等。

范围内的对象是可从围绕函数的范围访问的变量。见How do JavaScript closures work?

  

如何在控制台中以编程方式引用功能范围?

你做不到。范围不以编程方式访问。我不认为devtools有任何帮助也允许这样做。另请参阅How do I search through scope variables in Google Chrome Developer Tools?