Ebben az oktatóanyagban példák segítségével megismerheti a JavaScript-szimbólumot.
JavaScript szimbólum
A JavaScript ES6 új primitív adattípust vezetett be Symbol. A szimbólumok változhatatlanok (nem változtathatók meg) és egyediek. Például,
 // two symbols with the same description const value1 = Symbol('hello'); const value2 = Symbol('hello'); console.log(value1 === value2); // false
Bár az 1. és 2. érték ugyanazt a leírást tartalmazza, különböznek egymástól.
Szimbólum létrehozása
A Symbol()függvény segítségével létrehozhatja a Symbol. Például,
 // creating symbol const x = Symbol() typeof x; // symbol
Adhat át egy opcionális karakterláncot leírásként. Például,
 const x = Symbol('hey'); console.log(x); // Symbol(hey) 
Hozzáférési szimbólum leírása
A szimbólum leírásához az .operátort használjuk . Például,
 const x = Symbol('hey'); console.log(x.description); // hey 
A szimbólum hozzáadása objektumkulcsként
Szimbólumokat hozzáadhat kulcsként egy objektumhoz szögletes zárójelben (). Például,
 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) 
A szimbólumok nem szerepelnek a… hurokban
A for… inciklus nem ismétli a szimbolikus tulajdonságokat. Például,
 let id = Symbol("id"); let person = ( name: "Jack", age: 25, (id): 12 ); // using for… in for (let key in person) ( console.log(key); )
Kimenet
név életkor
A szimbólumok objektumban történő használatának előnyei
Ha ugyanazt a kódrészletet használják különféle programokban, akkor jobb Symbolsaz objektumkulcsban használni . Ez azért van, mert ugyanazt a kulcsnevet különböző kódokban használhatja, és elkerülheti az ismétlődési problémákat. Például,
 let person = ( name: "Jack" ); // creating Symbol let id = Symbol("id"); // adding symbol as a key person(id) = 12;
A fenti programban, ha az personobjektumot egy másik program is használja, akkor nem szeretne olyan tulajdonságot hozzáadni, amelyhez egy másik program hozzáférhet vagy módosíthatja. Ezért a használatával Symbollétrehoz egy egyedi tulajdonságot, amelyet felhasználhat.
Most, ha a másik programnak szintén egy id nevű tulajdonságot kell használnia , csak adjon hozzá egy nevű szimbólumot, idés nem lesznek másolási problémák. Például,
 let person = ( name: "Jack" ); let id = Symbol("id"); person(id) = "Another value";
A fenti programban még akkor is, ha ugyanazt a nevet használják értékek tárolására, az Symboladattípusnak egyedi értéke lesz.
A fenti programban, ha a string kulcsot használták, akkor a későbbi program megváltoztatta a tulajdonság értékét. Például,
 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
A fenti programban a második user.idfelülírja az előző értéket.
Szimbólum módszerek
A Symbol különféle módszerek állnak rendelkezésre.
| Módszer | Leírás | 
|---|---|
for() |  Meglévő szimbólumok keresése | 
keyFor() |  Visszaad egy megosztott szimbólumkulcsot a globális szimbólumregiszterből. | 
toSource() |  A Symbol objektum forrását tartalmazó karakterláncot ad vissza | 
toString() |  A szimbólum leírását tartalmazó karakterláncot ad vissza | 
valueOf() |  Visszaadja a Symbol objektum primitív értékét. | 
Példa: Szimbólum módszerek
 // 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 
Szimbólum tulajdonságai
| Tulajdonságok | Leírás | 
|---|---|
asyncIterator |  Visszaadja az objektum alapértelmezett AsyncIterator-ját | 
hasInstance |  Meghatározza, hogy egy konstruktor objektum felismer-e egy objektumot példányaként | 
isConcatSpreadable |  Jelzi, hogy egy objektumot el kell-e lapítani a tömbelemeihez | 
iterator |  Visszaadja az objektum alapértelmezett iterátorát | 
match |  Mérkőzések egy húr ellen | 
matchAll |  Visszaad egy olyan iterátort, amely a reguláris kifejezés egy karakterlánchoz való egyezését adja | 
replace |  A karakterlánc egyeztetett alszövegeit helyettesíti | 
search |  Az indexet adja vissza a karakterláncban, amely megfelel a reguláris kifejezésnek | 
split |  Hasít egy karakterláncot a szabályos kifejezésnek megfelelő indexeken | 
species |  Létrehozott objektumokat hoz létre | 
toPrimitive |  Az objektumot primitív értékgé alakítja | 
toStringTag |  Megadja az objektum alapértelmezett leírását | 
description |  Karakterláncot ad vissza, amely a szimbólum leírását tartalmazza | 
Példa: Szimbólum tulajdonságok példa
 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))








