code: function conform(src, conf) {
    var dest = {};
  
    var rec = function(dest, src, conf) {
      Object.keys(conf).forEach(function(key) {
        if((typeof conf[key] === 'object' && !Array.isArray(conf[key]))) {
          dest[key] = rec({}, src[key] || {}, conf[key]);
        } else if(typeof conf[key] === 'object' && Array.isArray(conf[key])) {
          dest[key] = conf[key];
        } else {
          if(Object.prototype.hasOwnProperty.call(src, key)) {
            dest[key] = src[key];
          } else {
            dest[key] = src[key] || conf[key];
          }
        }
      });
  
      return dest;
    };
  
    return rec(dest, src, conf);
  }
docs: @param {*} src
  @param {*} conf
  
  @returns {*}