JavaScript szimbólum (példákkal)

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

érdekes cikkek...