assignIn.js
 1  var copyObject = require('./_copyObject'),
 2      createAssigner = require('./_createAssigner'),
 3      keysIn = require('./keysIn');
 4  
 5  /**
 6   * This method is like `_.assign` except that it iterates over own and
 7   * inherited source properties.
 8   *
 9   * **Note:** This method mutates `object`.
10   *
11   * @static
12   * @memberOf _
13   * @since 4.0.0
14   * @alias extend
15   * @category Object
16   * @param {Object} object The destination object.
17   * @param {...Object} [sources] The source objects.
18   * @returns {Object} Returns `object`.
19   * @see _.assign
20   * @example
21   *
22   * function Foo() {
23   *   this.a = 1;
24   * }
25   *
26   * function Bar() {
27   *   this.c = 3;
28   * }
29   *
30   * Foo.prototype.b = 2;
31   * Bar.prototype.d = 4;
32   *
33   * _.assignIn({ 'a': 0 }, new Foo, new Bar);
34   * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
35   */
36  var assignIn = createAssigner(function(object, source) {
37    copyObject(source, keysIn(source), object);
38  });
39  
40  module.exports = assignIn;