code: function initCloneByTag(object, tag, cloneFunc, isDeep) {
          var Ctor = object.constructor;
          switch (tag) {
              case arrayBufferTag:
                  return cloneArrayBuffer(object);
  
              case boolTag:
              case dateTag:
                  return new Ctor(+object);
  
              case dataViewTag:
                  return cloneDataView(object, isDeep);
  
              case float32Tag:
              case float64Tag:
              case int8Tag:
              case int16Tag:
              case int32Tag:
              case uint8Tag:
              case uint8ClampedTag:
              case uint16Tag:
              case uint32Tag:
                  return cloneTypedArray(object, isDeep);
  
              case mapTag:
                  return cloneMap(object, isDeep, cloneFunc);
  
              case numberTag:
              case stringTag:
                  return new Ctor(object);
  
              case regexpTag:
                  return cloneRegExp(object);
  
              case setTag:
                  return cloneSet(object, isDeep, cloneFunc);
  
              case symbolTag:
                  return cloneSymbol(object);
          }
      }
docs: Initializes an object clone based on its `toStringTag`.
  
  **Note:** This function only supports cloning values with tags of
  `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
  
  @private
  @param {Object} object The object to clone.
  @param {string} tag The `toStringTag` of the object to clone.
  @param {Function} cloneFunc The function to clone values.
  @param {boolean} [isDeep] Specify a deep clone.
  @returns {Object} Returns the initialized clone.