0

javascript中用户定义对象属性的断点

你好

是否有任何 JavaScript 调试工具或插件可以帮助在用户定义的对象属性上放置断点。

例如:

我有一个 JavaScript 对象文字

var TextBox = { color:"gray", size:"100px", border:true }

这是我进行修改的代码

function foo(){ TextBox["color"] = "blue"; }

我正在寻找在TextBox.color上放置一个断点,以便在修改属性时我可以找到谁在进行修改或哪个函数进行了更改。

它也应该打破 TextBox.color = null; or delete TextBox.color;

这个功能在 firebug 或 chrome 开发者工具中是否已经可用?

我已经看到了 html 元素删除、属性修改的断点,但没有看到用户定义的对象属性的断点。

谢谢。

4

2 回答 2

1

看看一些浏览器支持的魔法 getter 和 setter: https ://developer.mozilla.org/en-US/docs/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters

您应该能够定义一个设置器并在其中放置一个断点。

出于兼容性原因,最好将这些代码保留在生产代码之外,但它们是调试某些问题的唯一实用方法。

于 2012-09-25T06:56:05.147 回答
1

使用这样的东西:

(function() {
    var obj=TextBox; var realValue = obj.color; 
    Object.defineProperty(obj, 'color', { 
        set: function(newValue) { debugger; realValue = newValue; },
        get: function() { debugger; return realValue; } 
    });
})();

只需在浏览器控制台中运行它。

于 2013-12-02T22:18:21.090 回答