00001 var Symbol = require('./_Symbol'); 00002 00004 var objectProto = Object.prototype; 00005 00007 var hasOwnProperty = objectProto.hasOwnProperty; 00008 00014 var nativeObjectToString = objectProto.toString; 00015 00017 var symToStringTag = Symbol ? Symbol.toStringTag : undefined; 00018 00026 function getRawTag(value) { 00027 var isOwn = hasOwnProperty.call(value, symToStringTag), 00028 tag = value[symToStringTag]; 00029 00030 try { 00031 value[symToStringTag] = undefined; 00032 var unmasked = true; 00033 } catch (e) {} 00034 00035 var result = nativeObjectToString.call(value); 00036 if (unmasked) { 00037 if (isOwn) { 00038 value[symToStringTag] = tag; 00039 } else { 00040 delete value[symToStringTag]; 00041 } 00042 } 00043 return result; 00044 } 00045 00046 module.exports = getRawTag;