3

我有一个复杂的 javascript 对象,它是由一些第三方工具生成的,看起来像这样(在 Chrome 开发人员工具观察面板内):

在 Chrome 开发者工具的 Watch 窗格中访问 <function scope> 的 Closure 值

我有兴趣阅读Object的那些textvalue属性。i我以前从未见过这样<function scope>的事情。在这种情况下,

如何从Chrome 开发人员工具的Watch面板中<function scope>Closure访问值?

还是不可能?

4

2 回答 2

4

闭包是一种特殊的对象,它结合了两件事:一个函数,以及创建该函数的环境。环境由创建闭包时在范围内的任何局部变量组成。

资料来源: MDN 闭包

您看到的i对象是在过去的某个时间点创建的,而您暂停的函数是在创建该对象的同一个外部函数中创建的。当内部函数访问外部函数的变量时,会创建一个闭包来“记住”它们。

您不能直接访问已关闭的变量。

于 2016-07-12T11:40:05.977 回答
1

您可以像这样更改日期值:

  • 右键单击“范围”中的变量(在源选项卡的右侧)。
  • 选择“将对象存储为全局变量”。
  • 现在您将跳转到控制台并拥有一个新的全局变量“temp1”。(如果你重复这样做会增加 1)
  • 键入 temp1.setTime([your-date-value]) 将更改它的值。

(在 Chrome 版本 88 中确认)

于 2021-03-03T07:50:48.557 回答