Javascript 哪个函数更改变量

Javascript 哪个函数更改变量,javascript,debugging,google-chrome-devtools,Javascript,Debugging,Google Chrome Devtools,我有一个变量foo,它的值会不时变化。我的代码很大, 所以我不知道它在哪里被改变了 我想知道是否有可能知道foo的值在哪里被操纵。我不在乎是否可以通过chrome调试器或javascript代码来解决它 有可能做到这一点吗?您可以添加一个对象。当您的属性发生更改时,可以直接在chrome开发工具中观察以获取控制台消息。看看这个: 寻找使用object的答案。正如@ChadMcGrath所指出的那样,observeobject。observe可能是您想要的,但还有一些其他选项可用,例如,如果变量是

我有一个变量
foo
,它的值会不时变化。我的代码很大, 所以我不知道它在哪里被改变了

我想知道是否有可能知道
foo
的值在哪里被操纵。我不在乎是否可以通过chrome调试器或javascript代码来解决它


有可能做到这一点吗?

您可以添加一个对象。当您的属性发生更改时,可以直接在chrome开发工具中观察以获取控制台消息。看看这个:


寻找使用object的答案。正如@ChadMcGrath所指出的那样,observe

object。observe
可能是您想要的,但还有一些其他选项可用,例如,如果变量是对象的属性,您可以为其定义setter:

var o = {};
Object.defineProperty(o, "myProperty",{ 
  set: function (x) {
    console.log("Set myProperty to", x);
    console.trace();
    this.value = x; 
  },
  get: function () {
    return this.value;
  },
});
使用ECMAScript 2015,您可以使用,但这在大多数浏览器中还不起作用:

var handler = {
    set: function(target, name, value, receiver){
        console.log("Set", name, "to", value);
        console.trace();
        target[name] = value;
    }
};

var o = new Proxy({}, handler);
o.myProperty = 1; //Will console log and give you a trace.

当您声明
foo
时,您可以这样做:

Object.defineProperty(window, "foo", { 
    set: function (x) { this.value = x; console.trace() }, 
    get: function() { return this.value; }
});
然后,只要设置了
foo
,它就会运行
console.trace()


在javascript控制台中添加断点怎么样?这是一个很好的教程:谢谢,但是我确实考虑了这个选项,但是它太多了。