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