对象值的Javascript设置器
我创建了一个“set”函数,它将在对象“myObject.user”的值更改期间触发该函数。因此,当我更改值时,我会变得警惕。但是,当我更新对象“myObject.newuser[0].id”内的值时,集合没有调用。如何更改代码,以便在更改任何内部值时,全局集都可以工作。ie对于这个代码,我应该得到两个警告对象值的Javascript设置器,javascript,setter,getter,defineproperty,Javascript,Setter,Getter,Defineproperty,我创建了一个“set”函数,它将在对象“myObject.user”的值更改期间触发该函数。因此,当我更改值时,我会变得警惕。但是,当我更新对象“myObject.newuser[0].id”内的值时,集合没有调用。如何更改代码,以便在更改任何内部值时,全局集都可以工作。ie对于这个代码,我应该得到两个警告 var myObject={}; myObject.user; Object.defineProperty(myObject,'newuser'{ get:function(){返回thi
var myObject={};
myObject.user;
Object.defineProperty(myObject,'newuser'{
get:function(){返回this.user;},
set:function(value){alert('Updated');this.user=value;}
});
myObject.newuser=[{“id”:“user1”}];
myObject.newuser[0].id=“user2”
您需要将属性myObject.newuser[0].id
更改为myObject.user[0].id
,然后它会将新值设置为现有用户的值
因为您可以使用新值更改以前添加的值
有关setter的更多详细信息,请参阅。您正在更改内部对象,这当然不会触发setter。我建议使用setter接口实现数据结构。这会更简单。