whole_func_string: function mergeOnProps (obj1, obj2, deep) {
          deep = isBoolean(deep) ? deep : false;
          Object.keys(obj1).forEach(function (key) {
              if (!obj2.hasOwnProperty(key)) {
                  return;
              }
              extendMulti(deep, obj1[key], obj2[key]);
          });
          return obj1;
      }
func_code_string: function mergeOnProps (obj1, obj2, deep) {
          deep = isBoolean(deep) ? deep : false;
          Object.keys(obj1).forEach(function (key) {
              if (!obj2.hasOwnProperty(key)) {
                  return;
              }
              extendMulti(deep, obj1[key], obj2[key]);
          });
          return obj1;
      }
func_documentation_string: Merges property values from object 2 to object 1 where possible (where property is writable or has getters and setters).
  @function module:sjl.mergeOnProps
  @param obj1 {Object}
  @param obj2 {Object}
  @param deep {Boolean} - Optional.  Default `false`.
  @returns {Object} - Passed in object at param 1.