code: function apply(destination, source, noOverwrite){
      var member;
      for (var prop in source) {
          if (source.hasOwnProperty(prop)) {
              if (prop in destination) {
                  member = source[prop];
                  if (typeof member === "object") {
                      apply(destination[prop], member, noOverwrite);
                  }
                  else if (!noOverwrite) {
                      destination[prop] = source[prop];
                  }
              }
              else {
                  destination[prop] = source[prop];
              }
          }
      }
      return destination;
  }
docs: Applies properties from the source object to the target object.<br/>
  @param {Object} target The target of the properties.
  @param {Object} source The source of the properties.
  @param {Boolean} noOverwrite Set to True to only set non-existing properties.