2011-02-23 9 views
6
var a = { 
    "example" : true 
}; 

var x = [a], y = [a]; 

delete x[0]; 

console.log(y); 

उपर्युक्त कोड में, क्या हटाया जाना संभव है, न कि केवल x में संदर्भ?क्या ऑब्जेक्ट को स्वयं हटाना संभव है, संदर्भ

+0

"हटाएं;" के बारे में क्या ? – Krumelur

+0

आप वस्तु '' –

+1

ऑब्जेक्ट को डी-रेफरेंस करना चाहते हैं यदि आप मैन्युअल मेमोरी प्रबंधन चाहते हैं, तो इसे भूल जाएं। ऑब्जेक्ट हटा दिया जाता है जब जीसी इसे फिट देखता है और जब यह साबित हो सकता है कि कोई और संदर्भ नहीं है, तो पहले नहीं। – delnan

उत्तर

10

कि कचरा कलेक्टर पर निर्भर है। जब तक वस्तु के कुछ संदर्भ हैं, तब तक यह कचरा नहीं होगा।

यदि आप इसे साफ़ करना चाहते हैं, तो सुनिश्चित करें कि कोई और संदर्भ नहीं हैं।

तो अपने प्रश्न का उत्तर देने के लिए, नहीं, किसी ऑब्जेक्ट को स्पष्ट रूप से नष्ट करने का कोई तरीका नहीं है। यदि a और y[0] अभी भी इसका संदर्भ दे रहे हैं, तो आप इसे अपने x चर से नहीं कर सकते हैं।

स्पष्ट होने के लिए, x[0]a का संदर्भ नहीं दे रहा है। यह स्मृति में उसी वस्तु को इंगित कर रहा है कि a संदर्भित है।

+0

तो, सूचकांक को जानने के बिना, वाई से निकालने का कोई तरीका नहीं है? – glider

+1

@ ग्लाइडर: 'y' ऐरे में सभी आइटमों को संदर्भित करने के अलावा, या इसे देखने के लिए ऐरे पर पुनरावृत्ति (या समर्थित होने पर' .indexOf() 'का उपयोग करके), वास्तव में नहीं। – user113716

+0

धन्यवाद, यह सब मैं जानना चाहता था। – glider

संबंधित मुद्दे