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

В този урок ще научите за JavaScript Symbol с помощта на примери.

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()функцията, за да създадете a 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)

Символите не са включени в за … в 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))

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