Конструктор Symbol()

Конструктор Symbol() повертає значення типу symbol, але він не є повноцінним конструктором, оскільки не підтримує синтаксис "new Symbol()", а також не призначений для створення підкласів. Його можна використовувати як значення блоку extends у визначенні класу, але виклик його через super спричинить виняток.

Синтаксис

Symbol([description])

Параметри

description Optional
Рядок. Опис символа, який може використовуватись для відлагодження, але не для доступу до самого символа.

Прилади

Створення символів

Щоб створити новий примітивний символ, напишіть Symbol() з необов'язковим рядком опису:

let sym1 = Symbol()
let sym2 = Symbol('foo')
let sym3 = Symbol('foo')

Наведений вище код створює три нові символи. Зауважте, що Symbol("foo") не приводить рядок "foo" до символа. Він кожен раз створює новий символ:

Symbol('foo') === Symbol('foo')  // false

new Symbol(...)

Наступний синтаксис з оператором new викине помилку TypeError:

let sym = new Symbol()  // TypeError

Це запобігає створенню явного об'єкта-обгортки Symbol замість нового символьного значення та може здивувати, оскільки створення таких об'єктів-обгорток навколо примітивних типів даних загалом можливе (наприклад, new Boolean, new String та new Number).

Якщо вам дійсно потрібно створити об'єкт-обгортку Symbol, ви можете скористатись фукнцією Object():

let sym    = Symbol('foo');
let symObj = Object(sym);
typeof sym    // => "symbol" 
typeof symObj // => "object"

Специфікації

Специфікація
ECMAScript (ECMA-262)
The definition of 'Symbol constructor' in that specification.

Сумісність з веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Symbol() constructorChrome Full support 38Edge Full support 12Firefox Full support 36IE No support NoOpera Full support 25Safari Full support 9WebView Android Full support 38Chrome Android Full support 38Firefox Android Full support 36Opera Android Full support 25Safari iOS Full support 9Samsung Internet Android Full support 3.0nodejs Full support 0.12

Legend

Full support  
Full support
No support  
No support

Див. також