У овом упутству ћете научити о ЈаваСцрипт симболу уз помоћ примера.
ЈаваСцрипт симбол
ЈаваСцрипт ЕС6 је представио нови примитивни тип података тзв Symbol
. Симболи су непроменљиви (не могу се мењати) и јединствени су. На пример,
// two symbols with the same description const value1 = Symbol('hello'); const value2 = Symbol('hello'); console.log(value1 === value2); // false
Иако вредност1 и вредност2 садрже исти опис, они се разликују.
Креирање симбола
Помоћу Symbol()
функције креирате 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)
Симболи нису укључени у фор … у Лооп
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
и неће бити проблема са дуплицирањем. На пример,
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
преписује претходну вредност.
Методе симбола
Постоје различите методе доступне са Симбол-ом.
Метод | Опис |
---|---|
for() | Претражује постојеће симболе |
keyFor() | Враћа заједнички кључ симбола из глобалног регистра симбола. |
toSource() | Приказује низ који садржи извор објекта Симбол |
toString() | Приказује низ који садржи опис симбола |
valueOf() | Враћа примитивну вредност објекта Симбол. |
Пример: Методе симбола
// 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 | Враћа задати АсинцИтератор за објекат |
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))