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

bdk*_*her 5 javascript scope google-chrome google-chrome-devtools

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

例如,在查看stackoverflow.com时,我可以看到有一个$包含另一个函数的全局对象Callbacks.Callbacks同样$,具有包含Closure和的功能范围Global.

Chrome DevTools控制台的屏幕截图

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

我问的原因是因为我正在寻找内存泄漏,并希望根据对象类型和属性名称搜索函数闭包中保存的对象.

Ber*_*rgi 4

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

直接与函数嵌套的对象是函数对象的属性。例如,$.Callback有一个.length值为 value 的属性1,它确实有一个.prototype属性,它确实继承 ( __proto__)Function.prototype等。

作用域中的对象是可以从函数周围的作用域访问的变量。请参阅JavaScript 闭包如何工作?

如何以编程方式在控制台中引用函数作用域?

你不能。范围无法以编程方式访问。我认为开发工具也没有任何帮助程序可以实现这一点。另请参阅如何在 Google Chrome 开发者工具中搜索作用域变量?