solarnetwork-d3.js
function sn_util_merge(obj1, obj2) {
    var prop, desc;
    if (obj2 === undefined) {
      obj2 = {};
    }
    for (prop in obj1) {
      if (obj1.hasOwnProperty(prop) && obj2[prop] === undefined) {
        desc = Object.getOwnPropertyDescriptor(obj1, prop);
        if (desc) {
          Object.defineProperty(obj2, prop, desc);
        } else {
          obj2[prop] = obj1[prop];
        }
      }
    }
    return obj2;
  }
function sn_util_merge(obj1, obj2) {
    var prop, desc;
    if (obj2 === undefined) {
      obj2 = {};
    }
    for (prop in obj1) {
      if (obj1.hasOwnProperty(prop) && obj2[prop] === undefined) {
        desc = Object.getOwnPropertyDescriptor(obj1, prop);
        if (desc) {
          Object.defineProperty(obj2, prop, desc);
        } else {
          obj2[prop] = obj1[prop];
        }
      }
    }
    return obj2;
  }
function sn_util_merge ( obj1 , obj2 ) { var prop , desc ; if ( obj2 === undefined ) { obj2 = { } ; } for ( prop in obj1 ) { if ( obj1 . hasOwnProperty ( prop ) && obj2 [ prop ] === undefined ) { desc = Object . getOwnPropertyDescriptor ( obj1 , prop ) ; if ( desc ) { Object . defineProperty ( obj2 , prop , desc ) ; } else { obj2 [ prop ] = obj1 [ prop ] ; } } } return obj2 ; }
Copy the enumerable own properties of `obj1` that don't already exist on `obj2` into `obj2` and return `obj2`.

@param {Object} obj1 - The object to copy enumerable properties from.
@param {Object} [obj2] - The optional object to copy the properties to. If not
provided a new object will be created.
@returns {Object} The object whose properties were copied to.
@since 0.14.0
@preserve
Copy the enumerable own properties of obj1 that don t already exist on obj2 into obj2 and return obj2 .