Tôi có một Mô hình sẽ "mang" (Model.validator) một phiên bản trình duyệt tính hợp lệ với nó và tôi cần Trình xác thực để có quyền truy cập vào các thuộc tính của Mô hình. Vì vậy, những gì tôi đã đưa ra là sau đâyTham chiếu vòng tròn giữa các đối tượng có thực hành không tốt?
var Validator = function(model) {
this.model = model;
};
var Model = function() {
this._attributes = {};
this.validator = new Validator(this);
};
var model = new Model();
Mã này tạo ra tham chiếu vòng tròn giữa hai đối tượng đó. Đây có phải là một thực hành xấu sẽ gây ra rò rỉ bộ nhớ? Bất kỳ ý tưởng khác về cách thực hiện nó?
P.S. Tôi đã thấy các tham chiếu vòng tròn như vậy giữa các đối tượng trong phạm vi Angular.js.
@ArunPJohny: trong IE6 có lẽ ... nhưng công cụ JS hiện đại là hoàn toàn có thể xử lý chu kỳ gc. – georg
@ArunPJohny: Ngay cả trong IE6, nếu chúng là các đối tượng JS đơn giản và không bao gồm DOM – Bergi
Lưu ý rằng tham chiếu vòng tròn sẽ gây ra các vấn đề khi nói đến serialization (thông qua 'JSON.stringify()' ví dụ) – Uriel