You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
20 lines
957 B
20 lines
957 B
4 weeks ago
|
'use strict';
|
||
|
/* eslint-disable es/no-symbol -- required for testing */
|
||
|
var V8_VERSION = require('../internals/environment-v8-version');
|
||
|
var fails = require('../internals/fails');
|
||
|
var globalThis = require('../internals/global-this');
|
||
|
|
||
|
var $String = globalThis.String;
|
||
|
|
||
|
// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
|
||
|
module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
|
||
|
var symbol = Symbol('symbol detection');
|
||
|
// Chrome 38 Symbol has incorrect toString conversion
|
||
|
// `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
|
||
|
// nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,
|
||
|
// of course, fail.
|
||
|
return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||
|
||
|
// Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
|
||
|
!Symbol.sham && V8_VERSION && V8_VERSION < 41;
|
||
|
});
|