| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- var isPlainObject = require('./type/is-plain-object');
- var isArray = require('./type/is-array');
- var MAX_MIX_LEVEL = 5;
- function _deepMix(dist, src, level, maxLevel) {
- level = level || 0;
- maxLevel = maxLevel || MAX_MIX_LEVEL;
- for (var key in src) {
- if (src.hasOwnProperty(key)) {
- var value = src[key];
- if (value !== null && isPlainObject(value)) {
- if (!isPlainObject(dist[key])) {
- dist[key] = {};
- }
- if (level < maxLevel) {
- _deepMix(dist[key], value, level + 1, maxLevel);
- } else {
- dist[key] = src[key];
- }
- } else if (isArray(value)) {
- dist[key] = [];
- dist[key] = dist[key].concat(value);
- } else if (value !== undefined) {
- dist[key] = value;
- }
- }
- }
- }
- var deepMix = function deepMix() {
- var args = new Array(arguments.length);
- var length = args.length;
- for (var i = 0; i < length; i++) {
- args[i] = arguments[i];
- }
- var rst = args[0];
- for (var _i = 1; _i < length; _i++) {
- _deepMix(rst, args[_i]);
- }
- return rst;
- };
- module.exports = deepMix;
|