Dalam tutorial ini, anda akan belajar mengenai Simbol JavaScript dengan bantuan contoh.
Simbol JavaScript
JavaScript ES6 memperkenalkan jenis data primitif baru yang dipanggil Symbol
. Simbol tidak berubah (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
Walaupun nilai1 dan nilai2 keduanya mengandungi keterangan yang sama, mereka berbeza.
Membuat Simbol
Anda menggunakan Symbol()
fungsi untuk membuat a Symbol
. Sebagai contoh,
// creating symbol const x = Symbol() typeof x; // symbol
Anda boleh memberikan rentetan pilihan sebagai keterangannya. Sebagai contoh,
const x = Symbol('hey'); console.log(x); // Symbol(hey)
Huraian Simbol Akses
Untuk mengakses keterangan simbol, kami menggunakan .
operator. Sebagai contoh,
const x = Symbol('hey'); console.log(x.description); // hey
Tambahkan Simbol sebagai Kekunci Objek
Anda boleh menambahkan simbol sebagai kunci dalam objek menggunakan tanda kurung persegi ()
. 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… di Loop
The for… in
gelung tidak Itekadar atas hartanah 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); )
Pengeluaran
umur nama
Faedah Menggunakan Simbol dalam Objek
Sekiranya coretan kod yang sama digunakan dalam pelbagai program, maka lebih baik digunakan Symbols
dalam kekunci objek. Ini kerana anda boleh menggunakan nama kunci yang sama dalam kod yang berbeza dan mengelakkan masalah pendua. 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. Oleh itu dengan menggunakan Symbol
, anda membuat harta unik yang boleh anda gunakan.
Sekarang, jika program lain juga perlu menggunakan sifat bernama id , tambahkan Simbol bernama id
dan tidak akan ada masalah pendua. Sebagai contoh,
let person = ( name: "Jack" ); let id = Symbol("id"); person(id) = "Another value";
Dalam program di atas, walaupun nama yang sama digunakan untuk menyimpan nilai, Symbol
jenis data akan mempunyai nilai yang unik.
Dalam program di atas, jika kunci rentetan digunakan, maka program kemudian akan mengubah nilai harta tanah. 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.
Kaedah Simbol
Terdapat pelbagai kaedah yang tersedia dengan Symbol.
Kaedah | Penerangan |
---|---|
for() | Mencari simbol yang ada |
keyFor() | Mengembalikan kunci simbol bersama dari daftar simbol global. |
toSource() | Mengembalikan rentetan yang mengandungi sumber objek Simbol |
toString() | Mengembalikan rentetan yang mengandungi keterangan Simbol |
valueOf() | Mengembalikan nilai primitif objek Simbol. |
Contoh: Kaedah 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
Sifat Simbol
Hartanah | Penerangan |
---|---|
asyncIterator | Mengembalikan AsyncIterator lalai untuk objek |
hasInstance | Menentukan apakah objek konstruktor mengenali objek sebagai contohnya |
isConcatSpreadable | Menunjukkan apakah objek harus diratakan ke elemen susunannya |
iterator | Mengembalikan iterator lalai untuk objek |
match | Perlawanan dengan tali |
matchAll | Mengembalikan iterator yang menghasilkan padanan ungkapan biasa dengan rentetan |
replace | Mengganti substring tali yang dipadankan |
search | Mengembalikan indeks dalam rentetan yang sepadan dengan ungkapan biasa |
split | Membahagi rentetan pada indeks yang sesuai dengan ungkapan biasa |
species | Membuat objek terbitan |
toPrimitive | Menukar objek ke nilai primitif |
toStringTag | Memberi keterangan lalai mengenai objek |
description | Mengembalikan rentetan yang mengandungi keterangan simbol |
Contoh: Contoh Sifat 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))