2014-12-24 3 views
5

Я создал функцию «set», с которой она будет срабатывать при изменении значения моего объекта «myObject.user». Поэтому, когда я меняю значение, я получаю предупреждение. но когда я обновляю значение внутри объекта «myObject.newuser [0] .id», этот набор не вызывает. Как изменить код так, чтобы при изменении любого внутреннего значения глобальный набор работал. т.е. для этого кода я должен получить два предупреждения.Javascript setter для значения объекта

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";

+3

Ну, вы меняете внутренний объект, который, конечно, не вызовет сеттер. Я рекомендую реализовать структуру данных с помощью интерфейса setter. Это было бы проще. – dfsq

ответ

0

Ну вам нужно изменить свойство myObject.newuser[0].id к myObject.user[0].id то он установит новое значение стоимости существующего пользователя.

Поскольку вы меняете ранее добавленную стоимость на новое значение.

Для получения дополнительной информации об установщике обратитесь к MDN link.