JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js"></script>

JavaScript

const a = {bar: {baz: 2}};
var b = {foo: 1};

// Example of customizer function that may take into account nested objects and properly copy them using lodash 4.x
var customizer = function(objValue, srcValue) {
	if (typeof srcValue === 'object' && typeof srcValue !== null) {
    return _.assignWith({}, srcValue, customizer);
  }
  return _.isUndefined(objValue) ? srcValue : objValue;
}

// This calls assign, but will invoke the customizer function
var result = _.assignWith({}, a, b, customizer);

result.bar.baz = 3;
result.foo = 4;
console.log(result, a, b);

// 'Constant' Array Example
const hi = [true, false, 'hi'];

hi[2] = 23;
console.log('hi.pop', hi.pop());
console.log('hi', hi);

//hi = 3;
//hi = 'no';
hi = [true, false, 23];
//hi = false;
//hi = {};