| 12345678910111213141516171819202122232425262728293031323334353637383940 | var hasOwn = require('./hasOwn');var deepClone = require('../lang/deepClone');var isObject = require('../lang/isObject');    /**     * Deep merge objects.     */    function merge() {        var i = 1,            key, val, obj, target;        // make sure we don't modify source element and it's properties        // objects are passed by reference        target = deepClone( arguments[0] );        while (obj = arguments[i++]) {            for (key in obj) {                if ( ! hasOwn(obj, key) ) {                    continue;                }                val = obj[key];                if ( isObject(val) && isObject(target[key]) ){                    // inception, deep merge objects                    target[key] = merge(target[key], val);                } else {                    // make sure arrays, regexp, date, objects are cloned                    target[key] = deepClone(val);                }            }        }        return target;    }    module.exports = merge;
 |