2014-12-24 21 views
5

Tôi đã tạo một hàm "set" mà nó sẽ kích hoạt trong khi thay đổi giá trị của đối tượng "myObject.user" của tôi. Vì vậy, khi tôi thay đổi giá trị tôi đang nhận được cảnh báo. nhưng khi tôi đang cập nhật giá trị bên trong đối tượng "myObject.newuser [0] .id" bộ này không gọi. Làm thế nào để thay đổi mã như vậy mà nếu bất kỳ giá trị bên trong được thay đổi tập toàn cầu nên làm việc. tức là cho mã này tôi sẽ nhận được hai cảnh báo.Thiết lập Javascript cho giá trị của đối tượng

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

Vâng, bạn đang thay đổi đối tượng bên trong mà tất nhiên sẽ không kích hoạt setter. Tôi khuyên bạn nên thực hiện cấu trúc dữ liệu với giao diện setter. Nó sẽ đơn giản hơn. – dfsq

Trả lời

0

Vâng, bạn cần phải thay đổi thuộc tính myObject.newuser[0].id-myObject.user[0].id sau đó nó sẽ thiết lập các giá trị mới cho giá trị của người dùng hiện có.

Vì bạn thay đổi giá trị đã thêm trước đó bằng giá trị mới.

Vui lòng tham khảo MDN link để biết thêm chi tiết về setter.

Các vấn đề liên quan