UNPKG

vui-design

Version:

A high quality UI Toolkit based on Vue.js

56 lines (45 loc) 1.15 kB
import { isBoolean, isFunction, isArray, isObject, isPlainObject } from "./is"; const merge = function() { let deep = false; let target = arguments[0] || {}; let i = 1; let length = arguments.length; let options, name, src, copy, copyIsArray, clone; if (isBoolean(target)) { deep = target; target = arguments[i] || {}; i++; } if (!isObject(target) && !isFunction(target)) { target = {}; } for (; i < length; i++) { if ((options = arguments[i]) != null) { for (name in options) { copy = options[name]; if (name === "__proto__" || target === copy) { continue; } if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { src = target[name]; if (copyIsArray && !isArray(src)) { clone = []; } else if (!copyIsArray && !isPlainObject(src)) { clone = {}; } else { clone = src; } copyIsArray = false; target[name] = merge(deep, clone, copy); } else if (copy !== undefined) { target[name] = copy; } } } } return target; }; export default merge;