0

我想确定何时更改特定变量。我使用这段代码来观察我可以访问的任何对象的任何属性都取得了巨大的成功,但它可以用于像这样声明的变量吗?:

$(                  // line 1
  function(){       // line 2
    var A;          // line 3
    // ... lots of code that uses A as if it were a global. I wanna see what part of this code sets A ...
  }                 // line 5999
);                  // line 6000

肯定A不会最终成为window. 它可能是跨越第 2 行到 5999 行的匿名函数对象的属性吗?因此,如果我命名该函数以便可以引用它,我能否以某种方式watchAvar/prop 上使用它?

我可以使用哪些其他方法来确定 var 的设置位置?

4

2 回答 2

1

这可能看起来有点疯狂,但稍作修改,您就可以看到变量指针。

(function() {
    window.ox = x = {};

    x.y = 5;
})();

alert(ox.y);

这会将其拉入全局范围,并且应该允许您从全局变量 ox 中观察变量 x。​</p>

于 2012-11-21T16:43:44.463 回答
0

你不能Object.prototype.watch在那个变量上使用,仅仅因为它是一个变量,而不是一个对象属性。无论其范围如何(即您提到的匿名函数)。

如果您出于调试目的尝试这样做,我相信您可以从浏览器的开发人员工具中观看它。

于 2012-11-21T16:34:45.557 回答