2015-03-05 5 views
23

में विनाशक है टाइपस्क्रिप्ट में विनाशक है? यदि नहीं, तो मैं किसी ऑब्जेक्ट को कैसे हटा सकता हूं? मैंने destructor() और ~ClassName() की कोशिश की लेकिन यह काम नहीं किया।क्या टाइपस्क्रिप्ट

उत्तर

25

जावास्क्रिप्ट कचरा संग्रह का उपयोग स्वचालित रूप से ऑब्जेक्ट को हटाने के लिए करता है जब उनका संदर्भ नहीं दिया जाता है। विनाशकों या फाइनलाइजर्स की कोई अवधारणा नहीं है।

कचरा कलेक्टर द्वारा ऑब्जेक्ट हटाए जाने पर आप यह नहीं देख सकते हैं, न ही यह अनुमान लगाया जा सकता है।

+3

कचरा संग्रह रोका जा सकता है यदि कोई टाइमर, कॉलबैक या ईवेंट श्रोता कहीं भी हटाए जाने वाले ऑब्जेक्ट से जुड़ा हुआ है। यदि कॉलबैक/श्रोता अभी भी मौजूद है तो आप त्रुटियां भी प्राप्त कर सकते हैं लेकिन ऑब्जेक्ट नहीं है। यदि आप पूरी तरह से सुनिश्चित होना चाहते हैं कि आप अपनी खुद की विध्वंसक विधि लिख सकते हैं और ऑब्जेक्ट को हटाने से पहले कॉल कर सकते हैं। – Kokodoko

+5

यह सही उत्तर नहीं है। गैबर लुपैक सबसे ज्यादा जानता है कि वहां एक कचरा संग्रह होता है। कचरा कलेक्टर के साथ भी, आपको कभी-कभी ऐप के निष्पादन के दौरान विशिष्ट बिंदुओं पर कुछ लंबे समय तक रहने वाले संदर्भों को रिलीज़ करने की आवश्यकता होती है ताकि संदर्भ संसाधन कचरा संग्रह के लिए योग्य हो या कम से कम ताकि स्मृति मेमोरी न हो। मेरा सुझाव यह है कि आप एक इंटरफ़ेस बनाते हैं (उदाहरण: इंटरफ़ेस रीलेसेबल {} और रिलीज() नामक एक विधि को परिभाषित करें और शायद एक ध्वज जिसे रिलीज़ कहा जाता है जिसे आप एक से अधिक बार रिलीज़() को रोकने के लिए उपयोग कर सकते हैं। – asiby