|  | var baseAssignValue = require('./_baseAssignValue'), | 
						
						
							|  |     eq = require('./eq'); | 
						
						
							|  | 
 | 
						
						
							|  | /** Used for built-in method references. */ | 
						
						
							|  | var objectProto = Object.prototype; | 
						
						
							|  | 
 | 
						
						
							|  | /** Used to check objects for own properties. */ | 
						
						
							|  | var hasOwnProperty = objectProto.hasOwnProperty; | 
						
						
							|  | 
 | 
						
						
							|  | /** | 
						
						
							|  |  * Assigns `value` to `key` of `object` if the existing value is not equivalent | 
						
						
							|  |  * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) | 
						
						
							|  |  * for equality comparisons. | 
						
						
							|  |  * | 
						
						
							|  |  * @private | 
						
						
							|  |  * @param {Object} object The object to modify. | 
						
						
							|  |  * @param {string} key The key of the property to assign. | 
						
						
							|  |  * @param {*} value The value to assign. | 
						
						
							|  |  */ | 
						
						
							|  | function assignValue(object, key, value) { | 
						
						
							|  |   var objValue = object[key]; | 
						
						
							|  |   if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || | 
						
						
							|  |       (value === undefined && !(key in object))) { | 
						
						
							|  |     baseAssignValue(object, key, value); | 
						
						
							|  |   } | 
						
						
							|  | } | 
						
						
							|  | 
 | 
						
						
							|  | module.exports = assignValue;
 |