1 | import DataView from './_DataView.js';
|
2 | import Map from './_Map.js';
|
3 | import Promise from './_Promise.js';
|
4 | import Set from './_Set.js';
|
5 | import WeakMap from './_WeakMap.js';
|
6 | import baseGetTag from './_baseGetTag.js';
|
7 | import toSource from './_toSource.js';
|
8 |
|
9 |
|
10 | var mapTag = '[object Map]',
|
11 | objectTag = '[object Object]',
|
12 | promiseTag = '[object Promise]',
|
13 | setTag = '[object Set]',
|
14 | weakMapTag = '[object WeakMap]';
|
15 |
|
16 | var dataViewTag = '[object DataView]';
|
17 |
|
18 |
|
19 | var dataViewCtorString = toSource(DataView),
|
20 | mapCtorString = toSource(Map),
|
21 | promiseCtorString = toSource(Promise),
|
22 | setCtorString = toSource(Set),
|
23 | weakMapCtorString = toSource(WeakMap);
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 | var getTag = baseGetTag;
|
33 |
|
34 |
|
35 | if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
|
36 | (Map && getTag(new Map) != mapTag) ||
|
37 | (Promise && getTag(Promise.resolve()) != promiseTag) ||
|
38 | (Set && getTag(new Set) != setTag) ||
|
39 | (WeakMap && getTag(new WeakMap) != weakMapTag)) {
|
40 | getTag = function(value) {
|
41 | var result = baseGetTag(value),
|
42 | Ctor = result == objectTag ? value.constructor : undefined,
|
43 | ctorString = Ctor ? toSource(Ctor) : '';
|
44 |
|
45 | if (ctorString) {
|
46 | switch (ctorString) {
|
47 | case dataViewCtorString: return dataViewTag;
|
48 | case mapCtorString: return mapTag;
|
49 | case promiseCtorString: return promiseTag;
|
50 | case setCtorString: return setTag;
|
51 | case weakMapCtorString: return weakMapTag;
|
52 | }
|
53 | }
|
54 | return result;
|
55 | };
|
56 | }
|
57 |
|
58 | export default getTag;
|