toPlainObject.js
 1  var copyObject = require('./_copyObject'),
 2      keysIn = require('./keysIn');
 3  
 4  /**
 5   * Converts `value` to a plain object flattening inherited enumerable string
 6   * keyed properties of `value` to own properties of the plain object.
 7   *
 8   * @static
 9   * @memberOf _
10   * @since 3.0.0
11   * @category Lang
12   * @param {*} value The value to convert.
13   * @returns {Object} Returns the converted plain object.
14   * @example
15   *
16   * function Foo() {
17   *   this.b = 2;
18   * }
19   *
20   * Foo.prototype.c = 3;
21   *
22   * _.assign({ 'a': 1 }, new Foo);
23   * // => { 'a': 1, 'b': 2 }
24   *
25   * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
26   * // => { 'a': 1, 'b': 2, 'c': 3 }
27   */
28  function toPlainObject(value) {
29    return copyObject(value, keysIn(value));
30  }
31  
32  module.exports = toPlainObject;