You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
709 B
JavaScript
23 lines
709 B
JavaScript
7 years ago
|
// getting tag from 19.1.3.6 Object.prototype.toString()
|
||
|
var cof = require('./_cof')
|
||
|
, TAG = require('./_wks')('toStringTag')
|
||
|
// ES3 wrong here
|
||
|
, ARG = cof(function(){ return arguments; }()) == 'Arguments';
|
||
|
|
||
|
// fallback for IE11 Script Access Denied error
|
||
|
var tryGet = function(it, key){
|
||
|
try {
|
||
|
return it[key];
|
||
|
} catch(e){ /* empty */ }
|
||
|
};
|
||
|
|
||
|
module.exports = function(it){
|
||
|
var O, T, B;
|
||
|
return it === undefined ? 'Undefined' : it === null ? 'Null'
|
||
|
// @@toStringTag case
|
||
|
: typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
|
||
|
// builtinTag case
|
||
|
: ARG ? cof(O)
|
||
|
// ES3 arguments fallback
|
||
|
: (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
|
||
|
};
|