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

时间:2012-09-25 06:47:13

标签: javascript json debugging firebug google-chrome-devtools

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

您好

是否有任何JavaScript调试工具或插件有助于打开断点 用户定义的对象属性。

例如:

我有一个JavaScript Object Literal

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元素删除,属性修改的断点 但不适用于用户定义的对象属性

感谢。

2 个答案:

答案 0 :(得分:1)

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

你应该能够定义一个setter并在其中放置一个断点。

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

答案 1 :(得分:1)

使用类似的东西:

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

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