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上查看设置者和获取者,以获取更多信息。
浏览器对设置器/获取器的支持: