JavaScript 使用设置器和获取器查找更改属性的内容
示例
假设您有一个像这样的对象:
var myObject = {
name: 'Peter'
}在您的代码的稍后部分,您尝试访问,myObject.name并且您得到的是George而不是Peter。您开始怀疑是谁更改了它,以及在何处进行了更改。有一种方法可以debugger在每个集合上放置(或其他)(每次有人这样做myObject.name='something'):
var myObject = {
_name: 'Peter',
set name(name){debugger;this._name=name},
get name(){return this._name}
}请注意,我们将其重命名为name,_name并将为定义一个setter和一个gettername。
setname是二传手。这是一个甜蜜点,你可以放置debugger,或者其他任何你需要进行调试。设置器将在中设置name的值。吸气剂(零件)将从那里读取值。现在,我们有了具有调试功能的功能齐全的对象。console.trace()_namegetname
但是,大多数情况下,更改的对象不在我们的控制之下。幸运的是,我们可以在现有对象上定义setter和getter来调试它们。
//首先,将名称保存为_name,因为我们将使用name作为setter/getter
otherObject._name = otherObject.name;
//创建setter和getter
Object.defineProperty(otherObject, "name", {
set: function(name) {debugger;this._name = name},
get: function() {return this._name}
});在MDN上查看设置者和获取者,以获取更多信息。
浏览器对设置器/获取器的支持: