打破变量值的变化

use*_*667 44 javascript debugging breakpoints watch

与此处的其他问题类似,就像这一个.

有没有办法在任何JavaScript调试器中打破变量值的变化?(比如IE Developer工具,Visual Studio或Firebug)?

我想它就像是一个"监视变量",但我希望能够看到callstack并在实际发生变量变化时暂停它.

另一种方法可能是使用自定义setter覆盖值设置,并在其中放置断点,但不幸的是,这对IE AFAIK不起作用.

更新 似乎这种行为至少可用于用C++编写的非托管代码. 所以我想也许用C++编写的javascript引擎(谷歌的V8)可能有类似的东西,但似乎没有我想要的东西.

pau*_*sm4 19

你甚至不需要IDE - 你可以使用"Object.watch()":

Object.Watch教程

如果你使用任何一个调试器,我强烈推荐使用Firebug.对于您的所有Javascript,HTML和CSS需求:-):

http://getfirebug.com/javascript

  • 我们在2013年,我还在等待浏览器支持Object.watch()... (8认同)
  • +1 b/c我想这会起作用.但是,我不认为它与很多浏览器atm兼容,b/c它是非标准的javascript 1.8.6:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/watch (4认同)
  • 2016年不支持Firefox或Chrome. (4认同)

rai*_*bba 10

我在Chrome中使用此库取得了成功,它似乎支持所有主流浏览器.

https://gist.github.com/eligrey/384583

只需包含.js文件,然后调用:

yourObject.watch('someProperty', function() { 
    doWhatYouWant(); 
    debugger; 
    console.write('this too'); 
    alert('Object Changed'); //etc 
});
Run Code Online (Sandbox Code Playgroud)