@@ -210,15 +210,18 @@ function quote(s) {
210
210
return String ( s ) . replace ( / " / g, '"' ) ;
211
211
}
212
212
213
- function isArray ( obj ) { return toStr ( obj ) === '[object Array]' ; }
214
- function isDate ( obj ) { return toStr ( obj ) === '[object Date]' ; }
215
- function isRegExp ( obj ) { return toStr ( obj ) === '[object RegExp]' ; }
216
- function isError ( obj ) { return toStr ( obj ) === '[object Error]' ; }
213
+ var hasToStringTag = typeof Symbol === 'function' && typeof Symbol . toStringTag === 'symbol' ;
214
+
215
+ function isArray ( obj ) { return toStr ( obj ) === '[object Array]' && ( ! hasToStringTag || ! ( Symbol . toStringTag in obj ) ) ; }
216
+ function isDate ( obj ) { return toStr ( obj ) === '[object Date]' && ( ! hasToStringTag || ! ( Symbol . toStringTag in obj ) ) ; }
217
+ function isRegExp ( obj ) { return toStr ( obj ) === '[object RegExp]' && ( ! hasToStringTag || ! ( Symbol . toStringTag in obj ) ) ; }
218
+ function isError ( obj ) { return toStr ( obj ) === '[object Error]' && ( ! hasToStringTag || ! ( Symbol . toStringTag in obj ) ) ; }
219
+ function isString ( obj ) { return toStr ( obj ) === '[object String]' && ( ! hasToStringTag || ! ( Symbol . toStringTag in obj ) ) ; }
220
+ function isNumber ( obj ) { return toStr ( obj ) === '[object Number]' && ( ! hasToStringTag || ! ( Symbol . toStringTag in obj ) ) ; }
221
+ function isBoolean ( obj ) { return toStr ( obj ) === '[object Boolean]' && ( ! hasToStringTag || ! ( Symbol . toStringTag in obj ) ) ; }
222
+ // Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives
217
223
function isSymbol ( obj ) { return toStr ( obj ) === '[object Symbol]' ; }
218
- function isString ( obj ) { return toStr ( obj ) === '[object String]' ; }
219
- function isNumber ( obj ) { return toStr ( obj ) === '[object Number]' ; }
220
224
function isBigInt ( obj ) { return toStr ( obj ) === '[object BigInt]' ; }
221
- function isBoolean ( obj ) { return toStr ( obj ) === '[object Boolean]' ; }
222
225
223
226
var hasOwn = Object . prototype . hasOwnProperty || function ( key ) { return key in this ; } ;
224
227
function has ( obj , key ) {
0 commit comments