1 | import {default as isObject} from "./isObject";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 | function validObject(obj) {
|
10 | if (typeof window === "undefined") { return true; }
|
11 | else { return obj !== window && obj !== document; }
|
12 | }
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 | function assign() {
|
24 | var objects = [], len = arguments.length;
|
25 | while ( len-- ) objects[ len ] = arguments[ len ];
|
26 |
|
27 |
|
28 | var target = objects[0];
|
29 | var loop = function ( i ) {
|
30 |
|
31 | var source = objects[i];
|
32 |
|
33 | Object.keys(source).forEach(function (prop) {
|
34 |
|
35 | var value = source[prop];
|
36 |
|
37 | if (isObject(value) && validObject(value)) {
|
38 | if (target.hasOwnProperty(prop) && isObject(target[prop])) { target[prop] = assign({}, target[prop], value); }
|
39 | else { target[prop] = assign({}, value); }
|
40 | }
|
41 | else if (Array.isArray(value)) { target[prop] = value.slice(); }
|
42 | else { target[prop] = value; }
|
43 |
|
44 | });
|
45 | };
|
46 |
|
47 | for (var i = 1; i < objects.length; i++) loop( i );
|
48 |
|
49 | return target;
|
50 |
|
51 | }
|
52 |
|
53 | export default assign;
|
54 |
|
55 |
|
\ | No newline at end of file |