मैं जावास्क्रिप्ट deleteऑपरेटर के साथ थोड़ा भ्रमित हूं । निम्नलिखित कोड कोड लें:
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
कोड के इस टुकड़े के बाद निष्पादित किया गया है, objहै null, लेकिन fooअभी भी बिल्कुल उसी तरह एक वस्तु को संदर्भित करता है obj। मैं अनुमान लगा रहा हूं कि यह वस्तु वही वस्तु है जो fooइंगित की गई है।
यह मुझे भ्रमित करता है, क्योंकि मुझे उम्मीद है कि लेखन delete objने उस ऑब्जेक्ट को हटा दिया objथा जो स्मृति में इंगित कर रहा था - न कि केवल चर obj।
इस वजह जावास्क्रिप्ट का कचरा कलेक्टर, एक बनाए रखने / रिलीज के आधार पर काम कर रहा है ताकि अगर मैं वस्तु की ओर इशारा करते किसी अन्य चर नहीं था, यह है होगा स्मृति से हटा दिया जाना?
(वैसे, मेरा परीक्षण सफारी 4 में किया गया था)
var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;ऑब्जेक्ट को डिलीट न करें चेक objडिलीट का उपयोग: delete obj.helloTextऔर फिर चेक करेंfoo now foo is an empty object
deleteजावास्क्रिप्ट में वस्तुओं को हटाने के लिए नहीं है। deleteइसका उपयोग ऑब्जेक्ट कुंजी को हटाने के लिए किया जाता है। आपके मामले में var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;, ऑब्जेक्ट हटा नहीं है। चेक करें obj। अगला, चलाएँ delete obj.helloTextऔर आप देख सकते हैं कि fooअब एक खाली बिंदु है। ऑब्जेक्ट। ""