मैं हाल ही में इस तरह एक वस्तु बनाने की कोशिश की:क्या जावास्क्रिप्ट ऑब्जेक्ट प्रॉपर्टी एक ही ऑब्जेक्ट की दूसरी प्रॉपर्टी का संदर्भ दे सकती है?
var carousel = {
$slider: $('#carousel1 .slider'),
panes: carousel.$slider.children().length
};
मेरे इरादों एक वस्तु संपत्ति में $('#carousel1 .slider')
के परिणाम कैशिंग द्वारा jQuery के चयनकर्ता प्रदर्शन में सुधार करने, और कोड संक्षिप्त और अपेक्षाकृत सूखा रखने के लिए थे।
हालांकि, यह काम नहीं किया। जब कोड निष्पादित किया गया, तो panes
के मान को पार्स करने का प्रयास करते समय यह अपवाद फेंक दिया, शिकायत करते हुए कि carousel
अनिर्धारित था।
यह समझ में आता है, क्योंकि मुझे लगता है कि carousel
पूरी तरह से घोषित नहीं किया गया है जब तक कि असाइनमेंट कथन पूरी तरह से निष्पादित नहीं किया जाता है। यही कारण है कि बहुत ज्यादा बदतर नहीं है
var carousel = {};
carousel.$slider = $('#carousel1 .slider');
carousel.panes = carousel.$slider.children().length;
, लेकिन carousel
वस्तु, कई और अधिक गुण है कि अन्य संपत्तियों के मूल्यों पर भरोसा करना होगा, ताकि जल्दी से वर्बोज़ बन सकता है: हालांकि, मैं इस का सहारा से बचने के लिए चाहते हैं।
मैंने this
का उपयोग करने का प्रयास किया, लेकिन इसका कोई फायदा नहीं हुआ। मैं शायद इसे सही तरीके से उपयोग नहीं कर रहा हूं, या हो सकता है कि यह वैसे भी एक वैध दृष्टिकोण न हो।
क्या ऑब्जेक्ट के गुणों के लिए एक ही ऑब्जेक्ट के अन्य गुणों को संदर्भित करने का कोई तरीका है, जबकि उस ऑब्जेक्ट को अभी भी घोषित किया जा रहा है? (! धन्यवाद, दोस्तों)
मैथ्यू Flaschen और कैसाब्लांका के जवाब के आधार पर, मुझे लगता है कि इन कि मैं पहुंचते हैं अपने वास्तविक कोड के संस्करणों, प्रत्येक दृष्टिकोण के आधार पर कर रहे हैं:
// Matthew Flaschen
var carousel = new (function() {
this.$carousel = $('.carousel');
this.$carousel_window = this.$carousel.find('.window');
this.$carousel_slider = this.$carousel.find('.slider');
this.$first_pane = this.$carousel.find('.slider').children(':first-child');
this.panes = this.$carousel_slider.children().length;
this.pane_gap = this.$first_pane.css('margin-right');
})();
और
// casablanca
var $carousel = $('.carousel'),
$carousel_slider = $carousel.find('.slider'),
$first_pane: $carousel.find('.slider').children(':first-child');
var properties = {
$carousel_window: $carousel.find('.window'),
panes: $carousel_slider.children().length,
pane_gap: $first_pane.css('margin-right')
};
properties.$carousel = $carousel;
properties.$carousel_slider = $carousel_slider;
properties.$first_pane = $first_pane;
मान लिया जाये कि उन दोनों सही हैं (मैं उन्हें परीक्षण नहीं किया है), यह एक कठिन कॉल की तरह है। मुझे लगता है कि मैं मैथ्यू फ्लैंचन के दृष्टिकोण को थोड़ा पसंद करता हूं, क्योंकि कोड एक संरचना में निहित है जो ऑब्जेक्ट घोषणा के करीब दिखता है। आखिरकार केवल एक चर बनाया गया है। हालांकि, वहां बहुत सारे this
हैं, जो दोहराए जाने लगते हैं - हालांकि यह केवल भुगतान करने की कीमत हो सकती है।
ओपी: डुप्लिकेट जरूरी कालक्रम के अनुसार निर्धारित नहीं किया गया है। लक्ष्य को * कैननिकल * प्रश्न को इंगित करने के लिए लक्ष्य के साथ, हम अधिक विस्तृत और व्यापक उत्तरों के साथ सबकुछ वापस प्रश्नों को इंगित करने का प्रयास करते हैं। हालांकि, यह एक आसान लक्ष्य नहीं है। इस तरह के प्रश्न को डुप्लिकेट के रूप में चिह्नित करना इसके खिलाफ कोई निशान नहीं है। आपका प्रश्न विभिन्न शर्तों के साथ खोज इंजन पर आएगा, और यदि ये उत्तर समाधान हल नहीं करते हैं, तो दूसरा (अधिक व्यापक) प्रश्न हो सकता है। – CodeMouse92
केस-इन-पॉइंट, मैंने लिखा है कि अब एक कैनोलिक सवाल माना जाता है, और कई पुराने, संकुचित-फोकस प्रश्नों को साइट के विज़िटर को सबसे पूर्ण उत्तरों की ओर फेंकने के लिए डुप्लिकेट के रूप में चिह्नित किया जा रहा है। गर्व करें - आपका "डुप्लिकेट" प्रश्न मदद कर रहा है। :) – CodeMouse92
@ जेसनएमसी 9 2 को स्पष्टीकरण के लिए धन्यवाद, जो समझ में आता है। मेरा अपडेट हटा देगा। – Bungle