我创建了一个“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";
答案 0 :(得分:0)
您需要将属性myObject.newuser[0].id
更改为myObject.user[0].id
,然后将新值设置为现有用户的值。
因为您使用新值更改以前添加的值。
有关setter的详细信息,请参阅MDN link。