2014-12-24 13 views
5

Ich habe eine "Set" -Funktion erstellt, auf die es während der Wertänderung meines Objekts "myObject.user" ausgelöst wird. Wenn ich also den Wert ändere, werde ich aufmerksam. aber wenn ich den Wert innerhalb des Objekts "myObject.newuser [0] .id" aktualisiere, ruft der Satz nicht auf. Wie man den Code so ändert, dass wenn ein innerer Wert geändert wird, der globale Satz funktionieren sollte. Dh für diesen Code sollte ich zwei Warnungen bekommen.Javascript Setter für den Wert des Objekts

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

Nun, Sie ändern innere Objekt, die natürlich Setter nicht auslösen wird. Ich empfehle, die Datenstruktur mit Setter-Schnittstelle zu implementieren. Es wäre einfacher. – dfsq

Antwort

0

Nun müssen Sie die Eigenschaft myObject.newuser[0].id-myObject.user[0].id ändern, dann wird es den neuen Wert zu vorhandenen Benutzer-Wert festgelegt.

Weil Sie den zuvor hinzugefügten Wert mit neuem Wert ändern.

Weitere Informationen zu Setter finden Sie unter MDN link.