Символ JavaScript (с примерами)

В этом руководстве вы узнаете о символе JavaScript с помощью примеров.

Символ JavaScript

В JavaScript ES6 появился новый примитивный тип данных, называемый Symbol. Символы неизменяемы (не могут быть изменены) и уникальны. Например,

 // two symbols with the same description const value1 = Symbol('hello'); const value2 = Symbol('hello'); console.log(value1 === value2); // false

Хотя value1 и value2 содержат одно и то же описание, они разные.

Создание символа

Вы используете Symbol()функцию для создания файла Symbol. Например,

 // creating symbol const x = Symbol() typeof x; // symbol

В качестве описания можно передать необязательную строку. Например,

 const x = Symbol('hey'); console.log(x); // Symbol(hey)

Символ доступа Описание

Чтобы получить доступ к описанию символа, мы используем .оператор. Например,

 const x = Symbol('hey'); console.log(x.description); // hey

Добавить символ как ключ объекта

Вы можете добавлять символы в качестве ключей к объекту, используя квадратные скобки (). Например,

 let id = Symbol("id"); let person = ( name: "Jack", // adding symbol as a key (id): 123 // not "id": 123 ); console.log(person); // (name: "Jack", Symbol(id): 123)

Символы не включены в for… in Loop

for… inЦикл не итерацию над символическими свойствами. Например,

 let id = Symbol("id"); let person = ( name: "Jack", age: 25, (id): 12 ); // using for… in for (let key in person) ( console.log(key); )

Вывод

 Назовите возраст

Преимущество использования символов в объекте

Если один и тот же фрагмент кода используется в разных программах, то лучше использовать Symbolsв объекте ключ. Это потому, что вы можете использовать одно и то же имя ключа в разных кодах и избежать проблем с дублированием. Например,

 let person = ( name: "Jack" ); // creating Symbol let id = Symbol("id"); // adding symbol as a key person(id) = 12;

В приведенной выше программе, если personобъект также используется другой программой, вы не захотите добавлять свойство, которое может быть доступно или изменено другой программой. Следовательно, используя Symbol, вы создаете уникальное свойство, которое можете использовать.

Теперь, если другой программе также необходимо использовать свойство с именем id , просто добавьте именованный символ, idи проблем с дублированием не возникнет. Например,

 let person = ( name: "Jack" ); let id = Symbol("id"); person(id) = "Another value";

В приведенной выше программе, даже если для хранения значений используется одно и то же имя, Symbolтип данных будет иметь уникальное значение.

В приведенной выше программе, если использовался строковый ключ, то более поздняя программа изменила бы значение свойства. Например,

 let person = ( name: "Jack" ); // using string as key person.id = 12; console.log(person.id); // 12 // Another program overwrites value person.id = 'Another value'; console.log(person.id); // Another value

В приведенной выше программе второе user.idперезаписывает предыдущее значение.

Символьные методы

В Symbol доступны различные методы.

Метод Описание
for() Поиск существующих символов
keyFor() Возвращает общий символьный ключ из глобального реестра символов.
toSource() Возвращает строку, содержащую источник объекта Symbol
toString() Возвращает строку, содержащую описание символа.
valueOf() Возвращает примитивное значение объекта Symbol.

Пример: методы символов

 // get symbol by name let sym = Symbol.for('hello'); let sym1 = Symbol.for('id'); // get name by symbol console.log( Symbol.keyFor(sym) ); // hello console.log( Symbol.keyFor(sym1) ); // id

Свойства символа

Свойства Описание
asyncIterator Возвращает AsyncIterator по умолчанию для объекта
hasInstance Определяет, распознает ли объект-конструктор объект как его экземпляр
isConcatSpreadable Указывает, должен ли объект быть сведен к его элементам массива
iterator Возвращает итератор по умолчанию для объекта
match Соответствует строке
matchAll Возвращает итератор, который выдает совпадения регулярного выражения со строкой
replace Заменяет совпадающие подстроки строки
search Возвращает индекс в строке, которая соответствует регулярному выражению.
split Разбивает строку по индексам, соответствующим регулярному выражению
species Создает производные объекты
toPrimitive Преобразует объект в примитивное значение
toStringTag Дает описание объекта по умолчанию
description Возвращает строку, содержащую описание символа.

Пример: пример свойств символа

 const x = Symbol('hey'); // description property console.log(x.description); // hey const stringArray = ('a', 'b', 'c'); const numberArray = (1, 2, 3); // isConcatSpreadable property numberArray(Symbol.isConcatSpreadable) = false; let result = stringArray.concat(numberArray); console.log(result); // ("a", "b", "c", (1, 2, 3))

Интересные статьи...