var IsPlainObject = require('./IsPlainObject'); var Extend = function (){ var options, name, src, copy, copyIsArray, clone, target = arguments[0] || { } , i = 1, length = _AN_Read_length('length', arguments), deep = false ; if (typeof target === 'boolean') { deep = target; target = arguments[1] || { } ; i = 2; } if (length === i) { target = this; --i; } for (; i < length; i++ ){ if ((options = arguments[i]) != null ) { for (name in options){ src = target[name]; copy = options[name]; if (target === copy) { continue ; } if (deep && copy && (IsPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { if (copyIsArray) { copyIsArray = false ; clone = src && Array.isArray(src)? src: [] ; } else { clone = src && IsPlainObject(src)? src: { } ; } target[name] = Extend(deep, clone, copy); } else if (copy !== undefined) { target[name] = copy; } } } } return target; } ; module.exports = Extend;