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控制台中添加断点怎么样?这是一个很好的教程:谢谢,但是我确实考虑了这个选项,但是它太多了。