gpt4 book ai didi

javascript - Chrome JavaScript 调试 : how to break when a value changes

转载 作者:可可西里 更新时间:2023-11-01 01:50:19 24 4
gpt4 key购买 nike

我正在调试一个大型 JavaScript 代码库,在某些时候,刷新页面时“控制台”变量会变为空。

有没有办法在控制台上设置监视并在该值更改时(或当条件 (console == null) 为真时)使 JavaScript 中断执行?

我在 Windows 7 上使用 Chrome。

最佳答案

下面的答案不适用于 window.console 因为 console (像其他浏览器本地环境变量一样)被特殊对待。任何向 console 赋值的尝试都只会“掩盖”原始值;它不会取代它。您无法检测到 console 值何时更改,但您可以删除 window.console 以恢复环境提供的原始值。

对于其他值,使用 Object.defineProperty为某些全局 window.foobar 定义自定义 setter 。每当 window.foobar 被分配一个新值时,setter 函数就会运行:

(function() {
var actualFoobar = window.foobar;

Object.defineProperty(window, "foobar", {
set: function(newValue) {
if(newValue === null) {
alert("someone is clobbering foobar!"); // <-- breakpoint here!
}

// comment out to disallow setting window.foobar
actualFoobar = newValue;
},

get: function() { return actualFoobar; }
});

})();

然后,在该 setter 函数中放置一个断点。

此方法适用于全局变量或任何对象属性(只需将 window 更改为具有该属性的对象)。

关于javascript - Chrome JavaScript 调试 : how to break when a value changes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13291814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com