Javascript setter for object的值

时间:2014-12-24 09:27:08

标签: javascript setter getter defineproperty

我创建了一个“set”函数,它将在我的对象“myObject.user”的值更改期间触发。因此,当我改变价值时,我会收到提醒。但是当我更新对象“myObject.newuser [0] .id”中的值时,该集合没有调用。如何更改代码,以便在更改任何内部值时,全局集应该有效。即对于这个代码我应该得到两个警报。

var myObject = {};
myObject.user;
 
Object.defineProperty(myObject, 'newuser', {
     get: function() { return this.user;},
     set: function(value) { alert('Updated');this.user=value;}
});
 
myObject.newuser = [{"id":"user1"}];
myObject.newuser[0].id="user2";

1 个答案:

答案 0 :(得分:0)

您需要将属性myObject.newuser[0].id更改为myObject.user[0].id,然后将新值设置为现有用户的值。

因为您使用新值更改以前添加的值。

有关setter的详细信息,请参阅MDN link