2015-03-05 18 views
23

Có destructor trong TypeScript không? Nếu không, làm thế nào tôi có thể xóa một đối tượng? Tôi đã thử destructor()~ClassName() nhưng nó không hoạt động.Có destructor trong typeScript

Trả lời

25

JavaScript sử dụng bộ sưu tập rác để tự động xóa đối tượng khi chúng không còn được tham chiếu. Không có khái niệm về destructors hoặc finalizers.

Bạn không thể quan sát khi một đối tượng bị xóa bởi bộ thu gom rác và cũng không thể dự đoán được.

+3

Bộ sưu tập rác có thể được ngăn chặn nếu bộ hẹn giờ, gọi lại hoặc trình xử lý sự kiện ở đâu đó vẫn được gắn với đối tượng cần xóa. Bạn cũng có thể gặp lỗi nếu người gọi lại/người nghe vẫn tồn tại nhưng đối tượng thì không. Nếu bạn muốn hoàn toàn chắc chắn bạn có thể viết phương thức hủy của riêng bạn và gọi nó trước khi xóa đối tượng. – Kokodoko

+5

Đây không phải là câu trả lời đúng. Gábor Lupák giống như biết rằng có một bộ sưu tập rác xảy ra ở đó. Ngay cả với bộ thu gom rác, bạn vẫn cần đôi khi phát hành một số tham chiếu dài tại các thời điểm cụ thể trong quá trình thực thi của ứng dụng để tài nguyên tham chiếu có thể đủ điều kiện thu gom rác hoặc ít nhất là không có rò rỉ bộ nhớ. Đề xuất của tôi là bạn tạo một giao diện (ví dụ: giao diện Releasable {} và xác định một phương thức có tên là release() và có thể một lá cờ được gọi là phát hành mà bạn có thể sử dụng để ngăn việc chạy release() nhiều lần. – asiby