code: function (target, objects, options) {
  
              for (var object in objects) {
                  if (objects.hasOwnProperty(object)) {
                      recursiveMerge(target, objects[object]);
                  }
              }
  
              function recursiveMerge(target, object) {
                  for (var property in object) {
                      if (object.hasOwnProperty(property)) {
                          var current = object[property];
                          if (utils.getConstructor(current) === 'Object') {
                              if (!target[property]) {
                                  target[property] = {};
                              }
                              recursiveMerge(target[property], current);
                          }
                          else {
                              // clearEmpty
                              if (options.clearEmpty) {
                                  if (current == null) {
                                      continue;
                                  }
                              }
                              target[property] = current;
                          }
                      }
                  }
              }
  
              return target;
          }
docs: Native extend object
  @param target
  @param objects
  @param options
  @returns {*}