Initial commit
[yaffs-website] / node_modules / grunt-contrib-watch / node_modules / lodash / object / merge.js
1 var baseMerge = require('../internal/baseMerge'),
2     createAssigner = require('../internal/createAssigner');
3
4 /**
5  * Recursively merges own enumerable properties of the source object(s), that
6  * don't resolve to `undefined` into the destination object. Subsequent sources
7  * overwrite property assignments of previous sources. If `customizer` is
8  * provided it's invoked to produce the merged values of the destination and
9  * source properties. If `customizer` returns `undefined` merging is handled
10  * by the method instead. The `customizer` is bound to `thisArg` and invoked
11  * with five arguments: (objectValue, sourceValue, key, object, source).
12  *
13  * @static
14  * @memberOf _
15  * @category Object
16  * @param {Object} object The destination object.
17  * @param {...Object} [sources] The source objects.
18  * @param {Function} [customizer] The function to customize assigned values.
19  * @param {*} [thisArg] The `this` binding of `customizer`.
20  * @returns {Object} Returns `object`.
21  * @example
22  *
23  * var users = {
24  *   'data': [{ 'user': 'barney' }, { 'user': 'fred' }]
25  * };
26  *
27  * var ages = {
28  *   'data': [{ 'age': 36 }, { 'age': 40 }]
29  * };
30  *
31  * _.merge(users, ages);
32  * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }
33  *
34  * // using a customizer callback
35  * var object = {
36  *   'fruits': ['apple'],
37  *   'vegetables': ['beet']
38  * };
39  *
40  * var other = {
41  *   'fruits': ['banana'],
42  *   'vegetables': ['carrot']
43  * };
44  *
45  * _.merge(object, other, function(a, b) {
46  *   if (_.isArray(a)) {
47  *     return a.concat(b);
48  *   }
49  * });
50  * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }
51  */
52 var merge = createAssigner(baseMerge);
53
54 module.exports = merge;