मैं एक वस्तु बनाने के लिए, की तरह कुछ से शुरू करना चाहते हैं:जावास्क्रिप्ट: बहु-आयामी वस्तु
var map = {};
फिर, मैं इस समारोह के साथ आइटम जोड़ना चाहते हैं:
add = function(integerA, objectB) {
map[objectB.type][integerA] = objectB;
}
तो, यह है ऑब्जेक्ट स्ट्रक्चर का एक यादृच्छिक उदाहरण जिसे मैं प्राप्त करना चाहता हूं:
map = {
'SomeType' : { 0 : 'obj', 2 : 'obj', 3 : 'obj' },
'OtherType' : { 0 : 'obj', 5 : 'obj' },
};
अब, मेरी समस्या। मैं map[objectB.type][integerA] = objectB;
नहीं कर सकता क्योंकि map[objectB.type]
परिभाषित नहीं किया गया है। मैं यह जांच कर हल कर सकता हूं कि map[objectB.type]
एक if-statement के माध्यम से मौजूद है और आवश्यक होने पर map[objectB.type] = {};
बनाएं।
अन्यथा मैं सभी ऑब्जेक्ट प्रकारों को प्री-लोड कर सकता था। हालांकि मैं ऐसा नहीं करना पसंद करूंगा।
मेरा प्रश्न: क्या कोई तरीका है कि मैं ऑब्जेक्ट 'फ्लाई पर' बना सकता हूं, यह जांचने के बिना कि क्या मैं पहले से मौजूद हूं, अगर मैं add
फ़ंक्शन को कॉल करना चाहता हूं या सभी प्रकारों को प्री-लोड करना चाहता हूं?
यह महत्वपूर्ण है कि मेरा ऐड फ़ंक्शन जितना तेज़ हो सके और नक्शा ऑब्जेक्ट सही है, क्योंकि मुझे थोड़ी सी मात्रा में पढ़ने और लिखने की आवश्यकता है (यह एक एनीमेशन/गेम एप्लिकेशन है)।
क्या आप वाकई एक प्रदर्शन समस्या होगी? अगर मैं तुम थे, तो मैं इसे पहले कोशिश करूँगा और देख सकता हूं कि यह एक समस्या है या नहीं। दिन के अंत में, आपको या तो चेक, या जावास्क्रिप्ट इंजन करने की आवश्यकता होगी, इसलिए निर्देशों को –
पर संसाधित करने की आवश्यकता होगी। इस लिंक में आपके प्रश्न का उत्तर http://stackoverflow.com/प्रश्न/7744611/पास-वैरिएबल-बाय-रेफरेंस-इन-जावास्क्रिप्ट –