मैं जावास्क्रिप्ट 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
अब एक खाली बिंदु है। ऑब्जेक्ट। ""