Symbol JavaScript Typ prymitywny | Wyjaśnione

Symbol JavaScript Typ prymitywny | Wyjaśnione
Wprowadzono nowy typ prymitywny ES6 znany jako "Symbol". Symbole to wbudowane obiekty używane do dodawania unikalnych kluczy właściwości dla obiektu JavaScript. Te unikalne klucze nieruchomości nie będą sprzeczne z klawiszami dodanymi przez inne skrypty i są ukryte przed mechanizmami używanymi do dostępu do obiektu, takich jak „dla w" pętla.

Typ prymitywnego symboli JavaScript jest tworzony i może być udostępniany na całym świecie. Ponadto można go również użyć do zdefiniowania ukrytych właściwości obiektu. Istnieją również dobrze znane symbole JavaScript, które zawierają wspólne zachowanie JavaScript.

Ten zapis wyjaśni Symbol JavaScript Typ prymitywny za pomocą odpowiednich przykładów. A więc zacznijmy!

Jak utworzyć symbol prymitywny typ w JavaScript

Globalny "Symbol()„Funkcja jest wykorzystywana do utworzenia nowego symbolu JavaScript w następujący sposób:

niech regid = symbol ();

Tutaj, "regid”To nowy typ prymitywny symbol JavaScript.

Możesz także dodać opis symbolu w nawiasie „()”Funkcji symbol (). Opis ten jest uważany za przydatny do celów debugowania, a także sprawia, że ​​symbole są bardziej opisowe:

let regId = symbol („Identyfikator rejestracji”);
konsola.log (regID);

Wyjście danego kodu wyświetli prymitywny typ „regid”I jego opis:

Przykład: Jak utworzyć symbol prymitywny typ w JavaScript

W poniższym na przykład utworzymy dwa symbole o nazwie „nazwa" I "wiek”I przekazuj swoje opisy jako argument do„Symbol()„Funkcja globalna:

Let Name = Symbol („Nazwa pracownika”),
wiek = symbol („wiek”);
konsola.log (nazwa);
konsola.dziennik (wiek);

Wykonanie powyższego przykładu pokazuje następujące dane wyjściowe:

Teraz użyjemy JavaScript „typ„Operator w celu ustalenia, czy”nazwa" I "wiek„Zmienne są tworzone jako symbol, czy nie:

konsola.log (nazwa typeof);
konsola.log (type wiek);

Jak widać z wyjścia, „typ„Operator zwrócił”symbol”Jako typ określonych zmiennych:

Pamiętaj, że symbole są tworzone tylko za pomocą „Symbol()„Funkcja globalna. W tym samym celu korzystanie z „nowy„Operator rzuci błąd, ponieważ symbole są prymitywnymi wartościami:

niech regid = nowy symbol ();

"regid„Symbol nie zostanie utworzony, a następujące„Typeerror" będzie pokazane:

Poprzednia sekcja dostarczyła metodę tworzenia symboli jako prymitywnych wartości typu. Teraz pójdziemy naprzód i omówimy, w jaki sposób możesz dzielić symbole w JavaScript.

Jak udostępnić symbol prymitywny typ w JavaScript

„„Globalny rejestr symbolu„Obsługiwane przez ES6 pozwala na udostępnienie utworzonego symbolu na całym świecie poprzez wykorzystanie„Symbol.Do()„Metoda zamiast używania„Symbol()”Funkcja.

Na przykład tworzymy „regid”Symbol z opisem za pomocą„Symbol.Do()" metoda:

Niech regid = symbol.dla („regid”);

Kiedy "Symbol.Do()„Metoda wykonuje, wyszukuje„regid„Klucz w globalnym rejestrze symboli; Jeśli „regid„Symbol już istnieje w rejestrze,„Symbol.Do()„Metoda ją zwróci. W innym przypadku nowy „regid„Symbol zostanie utworzony i dodany do globalnego rejestru symboli.

Teraz wywołując „Symbol.Do()„Metoda podczas przekazywania”regid„Klucz jako argument zwróci istniejące„regid„Symbol zawarty w globalnym rejestrze symbolu:

Pozwól studentowi = symbol.dla („regid”);
konsola.log (regId === StudentId);

Wyjście pokazuje „PRAWDA„Dla ścisłego porównania„regid" I "legitymacja studencka”Ponieważ oba są takie same pod względem typu i dodane klucze:

Do weryfikacji klucza związanego z „legitymacja studencka”, Wykonamy „Keyfor ()„Metoda i przejdź”legitymacja studencka„Jako argument:

konsola.dziennik (symbol.keyfor (studentId));

„„keyfor ()„Metoda powróci”regid”Jako klucz symbolu studenta:

Jeśli szukasz symbolu, który nie jest dodany w rejestrze globalnego symbolu, to „„keyfor ()„Metoda powróci”nieokreślony„Wartość dla określonej wartości:

niech EmployeId = symbol („EmployeEID”);
konsola.dziennik (symbol.keyfor (employeId));

Tutaj "dowód pracownika„Symbol nie istnieje w globalnym rejestrze symbolu, ponieważ jest tworzony za pomocą„Symbol()" zamiast "Symbol.Do()„Metoda i kiedy„Symbol.Do()„Metoda szuka tego w globalnym rejestrze symboli, powróciła”nieokreślony”:

Widziałeś, że tworzenie i dzielenie się prymitywnymi wartościami jest dość proste. Poniższa sekcja pokaże, w jaki sposób możesz użyć tych symboli w kodzie JavaScript.

Jak używać symboli do tworzenia ukrytych właściwości obiektu w JavaScript

Symbol JavaScript prymitywna wartość pozwala tworzyć ukryty właściwości obiektu. W tym celu możesz stworzyć „symbol”I wykorzystaj go jako klucz właściwości obiektu. Utworzona nieruchomość zostanie pominięta przez dla w pętla i inny skrypt nie byłby w stanie uzyskać do niego dostępu bezpośrednio, ponieważ „symbol”Nie jest zawarty w innych skryptach. W ten sposób symbole są uważane za idealne do ukrywania właściwości obiektów.

Przykład: Jak używać symboli do tworzenia ukrytych właściwości obiektu w JavaScript

Przede wszystkim stworzymy „articlestatus„Obiekt, który obejmuje następujące trzy symbole jako jego ukryte właściwości:

Niech articlestatus =
In_progress: symbol („artykuł w toku”),
Ukończony: symbol („artykuł zakończony”),
Ukończony: Symbol („Artykuł sfinalizowany”),
;

W następnym kroku dodamy kolejny symbol o nazwie „mój status”:

niech mystatus = symbol („mystatus”);

Oto ekscytująca część w „zadanie„Obiekt, dodamy dwie właściwości, jeden to„opis,”A drugi to„ [mój status]". „[mój status]”Jest obliczoną właściwością obiektu zadania, ponieważ pochodzi z„mój status„Symbol i jego wartość obejmują„ZAKOŃCZONY„Ukryta własność„articlestatus" obiekt:

Niech zadanie =
[Mystatus]: articlestatus.ZAKOŃCZONY,
Opis: „JavaScript Symbol Prymitywne”
;
konsola.log (zadanie);

Wyjście

Powyższe dane wyjściowe oznacza, że ​​symbole działają idealnie do tworzenia ukrytych właściwości, do których można uzyskać dostęp tylko z powiązanymi obiektami.

Dobrze znane symbole w JavaScript

ES6 obsługuje wiele predefiniowanych symboli zawierających wspólne zachowanie JavaScript, znane jako „dobrze znane„Symbole. Te dobrze znane symbole reprezentują statyczną właściwość „Symbol" obiekt.

Sprawdźmy najbardziej przydatne znane symbole JavaScript.

Symbol.Hasinstance w JavaScript

Symbol.Hasinstance jest symbolem używanym do ustalenia, czy obiekt konstruktor identyfikuje określony obiekt jako jego instancję, czy nie.

Składnia symbolu.Hasinstance w JavaScript

[Symbol.Hasinstance] (obiekt)

Tutaj "Symbol.Hasinstance„Symbol przyjmuje„obiekt„Jako argument.

Przykład: symbol.Hasinstance w JavaScript

Zazwyczaj, gdy operator instancji jest używany jako „Instancja obiektu typu„JavaScript wywołuje„Symbol.Hasinstance”Symbol. Następnie weryfikuje, czy „obiekt”Jest instancją drugiego określonego„typ„Obiekt czy nie.

W poniższym przykładzie tablica „[] []”Nie jest przykładem„Książka„Klasa, więc„wystąpienie„Operator zwróci”FAŁSZ”Jako wyjście:

Książka klasowa

konsola.log ([] instanceof Book);

Wyjście

Możesz dodać „Symbol.Hasinstance„Symbol do zdefiniowania tablicy”[] []”Jako przykład„Książka" Klasa:

Książka klasowa
statyczny [symbol.Hasinstance] (obj)
tablica powrotu.Isarray (OBJ);


konsola.log ([] instanceof Book);

Wyjście

Stąd "wystąpienie„Operator zwrócił”PRAWDA”Po wykonaniu określonej kontroli w tablicy„[] []".

Symbol.isConcatsPreadable w JavaScript

Symbol.isConcatsPreadable Symbol zwraca wartość logiczną, która określa, czy określony obiekt jest indywidualnie dodawany do wyniku „conat ()”Funkcja czy nie.

Składnia symbolu.isConcatsPreadable w JavaScript

[Symbol.isConcatsPreadable]: wartość

Tutaj, "wartość”Służy do ustawienia„Boolean" wartość Symbol.isConcatsPreadable symbol, gdzie „PRAWDA”Pozwala symbolu indywidualne dodawanie elementów obiektu i„FAŁSZ”Kontenetuje określony obiekt jako całość.

Przykład: symbol.isConcatsPreadable w JavaScript

Po pierwsze, stworzymy „OBJ1„JavaScript, który ma następujące właściwości:

Niech obj1 =
0: „JS”,
1: „Symbol prymitywny”,
Długość: 2
;

W następnym kroku połączymy „OBJ1" z ['Nauczanie'] tablica za pomocą „conat ()”Funkcja:

Niech info = [„nauczanie”].Conat (OBJ1);
konsola.log (informacje);

Funkcja Conat () nie rozprzestrzeni poszczególnych elementów „OBJ1„Podczas łączenia się z ['Nauczanie'] szyk:

Jeśli chcesz indywidualnie dodać elementy „OBJ1„Do tablicy musisz dodać Symbol.isConcatsPreadable Symbol jako właściwość „do„OBJ1”I ustaw swoją wartość na„PRAWDA”:

Niech obj1 =
0: „JS”,
1: „Symbol prymitywny”,
Długość: 2,
[Symbol.isConcatsPreadable]: True
;
Niech info = [„nauczanie”].Conat (OBJ1);
konsola.log (informacje);

Sprawdź pod względem danych wyjściowych; „„OBJ1„Elementy są dodawane indywidualnie w wyniku”informacje"Tablica:

Opracowaliśmy wszystkie podstawowe informacje związane z typem prymitywnym symbolem JavaScript.

Wniosek

Używając Symbol() Funkcja globalna, możesz utworzyć typ prymitywny symbol JavaScript, który zawiera unikalną wartość, podczas gdy jest Symbol.Do() Metoda umożliwia utworzenie symbolu, który można udostępniać na całym świecie. Symbol JavaScript Typ prymitywny jest najczęściej używany do zdefiniowania ukrytych właściwości obiektu. Ten napis wyjaśnił Symbol JavaScript Typ prymitywny za pomocą odpowiednich przykładów.