code: function deepAssign (target, source) {
    var keys = Object.keys(source);
  
    for (var i = 0; i < keys.length; i++) {
      var key = keys[i];
      var oldValue = target[key];
      var newValue = source[key];
  
      target[key] = deepClone(newValue, oldValue);
    }
  
    return target;
  }
docs: Deeply assigns the properties of the source object to the target object
  
  @param {object} target
  @param {object} source