पृष्ठभूमि
मेरे पास एक फ़ंक्शन है जो configऑब्जेक्ट को तर्क के रूप में लेता है । फ़ंक्शन के भीतर, मेरे पास भी defaultऑब्जेक्ट है। उन वस्तुओं में से प्रत्येक में ऐसे गुण होते हैं जो अनिवार्य रूप से फ़ंक्शन के भीतर बाकी कोड के लिए सेटिंग्स के रूप में काम करते हैं। configऑब्जेक्ट के भीतर सभी सेटिंग्स को निर्दिष्ट करने से रोकने के लिए , मैं extendऑब्जेक्ट में settingsकिसी भी डिफ़ॉल्ट मान के साथ एक नई वस्तु में भरने के लिए jQuery की विधि का उपयोग करता हूं, defaultयदि वे configऑब्जेक्ट में निर्दिष्ट नहीं थे :
var config = {key1: value1};
var default = {key1: default1, key2: default2, key 3: default 3};
var settings = $.extend(default, config);
//resulting properties of settings:
settings = {key1: value1, key2: default2, key 3: default 3};
संकट
यह बहुत अच्छा काम करता है, लेकिन मैं इस कार्यक्षमता को jQuery की आवश्यकता के बिना पुन: पेश करना चाहूंगा। वहाँ एक समान रूप से सुंदर है (या करीब) इसका मतलब सादे राजभाषा जावास्क्रिप्ट के साथ ऐसा करने के लिए?
संपादित करें: गैर-डुप्लिकेट औचित्य
यह प्रश्न " मैं कैसे दो जावास्क्रिप्ट वस्तुओं के गुणों को गतिशील रूप से विलय कर सकता हूं " की नकल नहीं है । जबकि यह प्रश्न बस एक ऐसी वस्तु बनाना चाहता है जिसमें दो अलग-अलग वस्तुओं से सभी कुंजियाँ और मान हों - मैं विशेष रूप से इस घटना में कैसे पता करना चाहता हूँ कि दोनों वस्तुएँ कुछ साझा करती हैं लेकिन सभी कुंजियाँ नहीं हैं और किस वस्तु को पूर्वता मिलेगी ( डिफ़ॉल्ट) घटना में परिणामी वस्तु के लिए कि डुप्लिकेट कुंजियाँ हैं। और इससे भी अधिक विशेष रूप से, मैं इसे प्राप्त करने के लिए jQuery की विधि के उपयोग को संबोधित करना चाहता था और jQuery के बिना ऐसा करने का एक वैकल्पिक तरीका ढूंढता था। जबकि दोनों प्रश्नों के कई उत्तर ओवरलैप करते हैं, इसका मतलब यह नहीं है कि प्रश्न स्वयं ही समान हैं।