1 var cloneArrayBuffer = require(
'./_cloneArrayBuffer'),
2 cloneDataView = require(
'./_cloneDataView'),
3 cloneMap = require(
'./_cloneMap'),
4 cloneRegExp = require(
'./_cloneRegExp'),
5 cloneSet = require(
'./_cloneSet'),
6 cloneSymbol = require(
'./_cloneSymbol'),
7 cloneTypedArray = require(
'./_cloneTypedArray');
10 var boolTag =
'[object Boolean]',
11 dateTag =
'[object Date]',
12 mapTag =
'[object Map]',
13 numberTag =
'[object Number]',
14 regexpTag =
'[object RegExp]',
15 setTag =
'[object Set]',
16 stringTag =
'[object String]',
17 symbolTag =
'[object Symbol]';
19 var arrayBufferTag =
'[object ArrayBuffer]',
20 dataViewTag =
'[object DataView]',
21 float32Tag =
'[object Float32Array]',
22 float64Tag =
'[object Float64Array]',
23 int8Tag =
'[object Int8Array]',
24 int16Tag =
'[object Int16Array]',
25 int32Tag =
'[object Int32Array]',
26 uint8Tag =
'[object Uint8Array]',
27 uint8ClampedTag =
'[object Uint8ClampedArray]',
28 uint16Tag =
'[object Uint16Array]',
29 uint32Tag =
'[object Uint32Array]';
44 function initCloneByTag(
object, tag, cloneFunc, isDeep) {
45 var Ctor =
object.constructor;
48 return cloneArrayBuffer(
object);
52 return new Ctor(+
object);
55 return cloneDataView(
object, isDeep);
57 case float32Tag:
case float64Tag:
58 case int8Tag:
case int16Tag:
case int32Tag:
59 case uint8Tag:
case uint8ClampedTag:
case uint16Tag:
case uint32Tag:
60 return cloneTypedArray(
object, isDeep);
63 return cloneMap(
object, isDeep, cloneFunc);
67 return new Ctor(
object);
70 return cloneRegExp(
object);
73 return cloneSet(
object, isDeep, cloneFunc);
76 return cloneSymbol(
object);
80 module.exports = initCloneByTag;