Dalam tutorial ini, Anda akan belajar tentang Simbol JavaScript dengan bantuan contoh.
Simbol JavaScript
JavaScript ES6 memperkenalkan tipe data primitif baru yang disebut Symbol
. Simbol tidak dapat diubah (tidak dapat diubah) dan unik. Sebagai contoh,
// two symbols with the same description const value1 = Symbol('hello'); const value2 = Symbol('hello'); console.log(value1 === value2); // false
Meskipun nilai1 dan nilai2 berisi deskripsi yang sama, keduanya berbeda.
Membuat Simbol
Anda menggunakan Symbol()
fungsi untuk membuat file Symbol
. Sebagai contoh,
// creating symbol const x = Symbol() typeof x; // symbol
Anda dapat memberikan string opsional sebagai deskripsinya. Sebagai contoh,
const x = Symbol('hey'); console.log(x); // Symbol(hey)
Deskripsi Simbol Akses
Untuk mengakses deskripsi simbol, kami menggunakan .
operator. Sebagai contoh,
const x = Symbol('hey'); console.log(x.description); // hey
Tambahkan Simbol sebagai Kunci Objek
Anda dapat menambahkan simbol sebagai kunci dalam objek menggunakan tanda kurung siku ()
. Sebagai contoh,
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)
Simbol tidak termasuk dalam for… in Loop
The for… in
Loop tidak iterate atas properti simbolik. Sebagai contoh,
let id = Symbol("id"); let person = ( name: "Jack", age: 25, (id): 12 ); // using for… in for (let key in person) ( console.log(key); )
Keluaran
usia nama
Manfaat Menggunakan Simbol di Objek
Jika potongan kode yang sama digunakan di berbagai program, maka lebih baik digunakan Symbols
di kunci objek. Itu karena Anda dapat menggunakan nama kunci yang sama dalam kode yang berbeda dan menghindari masalah duplikasi. Sebagai contoh,
let person = ( name: "Jack" ); // creating Symbol let id = Symbol("id"); // adding symbol as a key person(id) = 12;
Dalam program di atas, jika person
objek tersebut juga digunakan oleh program lain, maka Anda tidak ingin menambahkan properti yang dapat diakses atau diubah oleh program lain. Karenanya dengan menggunakan Symbol
, Anda membuat properti unik yang dapat Anda gunakan.
Sekarang, jika program lain juga perlu menggunakan properti bernama id , cukup tambahkan Simbol bernama id
dan tidak akan ada masalah duplikasi. Sebagai contoh,
let person = ( name: "Jack" ); let id = Symbol("id"); person(id) = "Another value";
Dalam program di atas, meskipun nama yang sama digunakan untuk menyimpan nilai, Symbol
tipe data akan memiliki nilai unik.
Dalam program di atas, jika kunci string digunakan, maka program selanjutnya akan mengubah nilai properti. Sebagai contoh,
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
Dalam program di atas, yang kedua user.id
menimpa nilai sebelumnya.
Metode Simbol
Ada berbagai metode yang tersedia dengan Simbol.
metode | Deskripsi |
---|---|
for() | Mencari simbol yang ada |
keyFor() | Mengembalikan kunci simbol bersama dari registri simbol global. |
toSource() | Mengembalikan string yang berisi sumber dari objek Simbol |
toString() | Mengembalikan string yang berisi deskripsi Simbol |
valueOf() | Mengembalikan nilai primitif dari objek Simbol. |
Contoh: Metode Simbol
// 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
Properti Simbol
Properti | Deskripsi |
---|---|
asyncIterator | Mengembalikan AsyncIterator default untuk sebuah objek |
hasInstance | Menentukan apakah objek konstruktor mengenali objek sebagai instance-nya |
isConcatSpreadable | Menunjukkan apakah suatu objek harus diratakan ke elemen lariknya |
iterator | Mengembalikan iterator default untuk sebuah objek |
match | Cocok dengan string |
matchAll | Mengembalikan iterator yang menghasilkan kecocokan ekspresi reguler dengan string |
replace | Mengganti substring yang cocok dari sebuah string |
search | Mengembalikan indeks dalam string yang cocok dengan ekspresi reguler |
split | Memisahkan string di indeks yang cocok dengan ekspresi reguler |
species | Membuat objek turunan |
toPrimitive | Mengonversi objek menjadi nilai primitif |
toStringTag | Memberikan deskripsi default suatu objek |
description | Mengembalikan string yang berisi deskripsi simbol |
Contoh: Contoh Properti Simbol
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))