| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | var assignValue = require('./_assignValue'),    copyObject = require('./_copyObject'),    createAssigner = require('./_createAssigner'),    isArrayLike = require('./isArrayLike'),    isPrototype = require('./_isPrototype'),    keys = require('./keys');/** Used for built-in method references. */var objectProto = Object.prototype;/** Used to check objects for own properties. */var hasOwnProperty = objectProto.hasOwnProperty;/** * Assigns own enumerable string keyed properties of source objects to the * destination object. Source objects are applied from left to right. * Subsequent sources overwrite property assignments of previous sources. * * **Note:** This method mutates `object` and is loosely based on * [`Object.assign`](https://mdn.io/Object/assign). * * @static * @memberOf _ * @since 0.10.0 * @category Object * @param {Object} object The destination object. * @param {...Object} [sources] The source objects. * @returns {Object} Returns `object`. * @see _.assignIn * @example * * function Foo() { *   this.a = 1; * } * * function Bar() { *   this.c = 3; * } * * Foo.prototype.b = 2; * Bar.prototype.d = 4; * * _.assign({ 'a': 0 }, new Foo, new Bar); * // => { 'a': 1, 'c': 3 } */var assign = createAssigner(function(object, source) {  if (isPrototype(source) || isArrayLike(source)) {    copyObject(source, keys(source), object);    return;  }  for (var key in source) {    if (hasOwnProperty.call(source, key)) {      assignValue(object, key, source[key]);    }  }});module.exports = assign;
 |