Symbol JavaScript (z przykładami)

W tym samouczku nauczysz się o symbolu JavaScript przy pomocy przykładów.

Symbol JavaScript

JavaScript ES6 wprowadził nowy prymitywny typ danych o nazwie Symbol. Symbole są niezmienne (nie można ich zmienić) i są niepowtarzalne. Na przykład,

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

Chociaż wartość1 i wartość2 zawierają ten sam opis, są różne.

Tworzenie symbolu

Używasz Symbol()funkcji do tworzenia pliku Symbol. Na przykład,

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

Jako opis można przekazać opcjonalny ciąg. Na przykład,

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

Opis symbolu dostępu

Aby uzyskać dostęp do opisu symbolu, używamy .operatora. Na przykład,

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

Dodaj symbol jako klucz obiektu

Możesz dodać symbole jako klucz w obiekcie za pomocą nawiasów kwadratowych (). Na przykład,

 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)

Symbole nie są zawarte w for… in Loop

for… inPętli nie iteracyjnego właściwości symbolicznych. Na przykład,

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

Wynik

 imię Wiek

Korzyści z używania symboli w obiekcie

Jeśli ten sam fragment kodu jest używany w różnych programach, lepiej jest użyć go Symbolsw kluczu obiektu. Dzieje się tak, ponieważ możesz użyć tej samej nazwy klucza w różnych kodach i uniknąć problemów z powielaniem. Na przykład,

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

W powyższym programie, jeśli personobiekt jest również używany przez inny program, nie chciałbyś dodawać właściwości, do której inny program może uzyskać dostęp lub zmienić. Dlatego używając Symbol, tworzysz unikalną właściwość, której możesz użyć.

Teraz, jeśli inny program również musi używać właściwości o nazwie id , po prostu dodaj symbol o nazwie idi nie będzie problemów z powielaniem. Na przykład,

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

W powyższym programie, nawet jeśli ta sama nazwa jest używana do przechowywania wartości, Symboltyp danych będzie miał unikalną wartość.

W powyższym programie, gdyby został użyty klucz łańcuchowy, to późniejszy program zmieniłby wartość właściwości. Na przykład,

 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

W powyższym programie druga user.idnadpisuje poprzednią wartość.

Metody symboli

W programie Symbol dostępne są różne metody.

metoda Opis
for() Wyszukuje istniejące symbole
keyFor() Zwraca współużytkowany klucz symbolu z globalnego rejestru symboli.
toSource() Zwraca ciąg zawierający źródło obiektu Symbol
toString() Zwraca ciąg zawierający opis symbolu
valueOf() Zwraca pierwotną wartość obiektu Symbol.

Przykład: metody symboli

 // 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

Właściwości symbolu

Nieruchomości Opis
asyncIterator Zwraca domyślny AsyncIterator dla obiektu
hasInstance Określa, czy obiekt konstruktora rozpoznaje obiekt jako jego wystąpienie
isConcatSpreadable Wskazuje, czy obiekt powinien zostać spłaszczony do elementów tablicy
iterator Zwraca domyślny iterator dla obiektu
match Dopasowuje do ciągu
matchAll Zwraca iterator, który zwraca wyniki wyrażenia regularnego względem ciągu
replace Zastępuje dopasowane podciągi ciągu
search Zwraca indeks w ciągu, który pasuje do wyrażenia regularnego
split Dzieli ciąg według indeksów pasujących do wyrażenia regularnego
species Tworzy obiekty pochodne
toPrimitive Konwertuje obiekt na wartość pierwotną
toStringTag Podaje domyślny opis obiektu
description Zwraca ciąg zawierający opis symbolu

Przykład: Przykład właściwości symbolu

 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))

Interesujące artykuły...