assign/extend सोर्स में प्रत्येक प्रॉपर्टी लेते हैं, इसके मान को वैसे ही डेस्टिनेशन में कॉपी करते हैं। यदि प्रॉपर्टी मान स्वयं ऑब्जेक्ट्स हैं, तो उनकी प्रॉपर्टीज़ का कोई रिकर्सिव ट्रैवर्सल नहीं होता। इसे शैलो कॉपीिंग/क्लोनिंग भी कहा जाता है। पूरा ऑब्जेक्ट सोर्स से लिया जाएगा और डेस्टिनेशन में सेट किया जाएगा।
merge सोर्स में प्रत्येक प्रॉपर्टी लेता है, जांचता है कि क्या वह प्रॉपर्टी स्वयं ऑब्जेक्ट है। यदि हां तो यह रिकर्सिवली नीचे जाता है और सोर्स से डेस्टिनेशन में चाइल्ड ऑब्जेक्ट प्रॉपर्टीज़ को मैप करने का प्रयास करता है।
उदाहरण
let _ = require('lodash'); let destination = { a: { b: 1, c: 2 }, }; let source = { a: { d: 2, c: 3 }, }; console.log(_.merge(destination, source)); console.log(_.extend(destination, source));
आउटपुट
यह आउटपुट देगा:
{ a: { b: 1, c: 3, d: 2 } } { a: { d: 2, c: 3 } }