Конструктор 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"

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

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

BCD tables only load in the browser

Див. також