Akademi JavaScript · Pelajaran

Symbol yang Diketahui Umum

Sesuaikan tingkah laku dengan Symbol.iterator dan simbol lain.

Pelajaran 4 daripada 413 langkah

Symbol yang Diketahui Umum ialah pelajaran Akademi JavaScript percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Akademi JavaScript, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Akademi JavaScript merangkumi sejumlah 4 pelajaran.

Simbol Diketahui Umum

Simbol yang diketahui umum ialah simbol terbina dalam yang disimpan pada objek Symbol. Simbol ini membolehkan anda menyesuaikan cara objek berkelakuan dengan ciri bahasa seperti lelaran dan penukaran.

console.log(typeof Symbol.iterator)
console.log(typeof Symbol.toPrimitive)

Symbol.iterator

Symbol.iterator menentukan cara objek dilelar oleh gelung for-of dan operator pengembangan. Tatasusunan serta rentetan terbina dalam sudah menyediakannya.

const arr = [10, 20]
const it = arr[Symbol.iterator]()
console.log(it.next().value)

Menjadikan Objek Boleh Dilelar

Anda menambah kaedah Symbol.iterator yang mengembalikan lelaran dengan kaedah next untuk menjadikan mana-mana objek boleh digunakan dalam gelung for-of.

const range = {
  from: 1,
  to: 3,
  [Symbol.iterator]() {
    let cur = this.from
    const last = this.to
    return {
      next() {
        return cur <= last ? { value: cur++, done: false } : { value: undefined, done: true }
      }
    }
  }
}
for (const n of range) {
  console.log(n)
}

Melelar dengan Pengembangan

Oleh sebab Symbol.iterator juga mengawal pengembangan, objek boleh lelar tersuai boleh dikembangkan menjadi tatasusunan.

const nums = {
  [Symbol.iterator]() {
    let i = 0
    return { next() { return i < 3 ? { value: i++, done: false } : { value: undefined, done: true } } }
  }
}
console.log([...nums])

Symbol.toPrimitive

Symbol.toPrimitive membolehkan objek mengawal cara ia ditukar kepada nilai primitif dalam konteks nombor, rentetan atau lalai.

const money = {
  amount: 50,
  [Symbol.toPrimitive](hint) {
    if (hint === "number") return this.amount
    return "$" + this.amount
  }
}
console.log(+money)
console.log(money + "")

Argumen Petunjuk

Pengendali penukaran menerima petunjuk berupa number, string atau default, lalu membolehkan anda mengembalikan nilai yang sesuai bagi setiap situasi.

const obj = {
  [Symbol.toPrimitive](hint) {
    return hint
  }
}
console.log(+obj)
console.log(obj + "")
console.log(String(obj))

Symbol.toStringTag

Symbol.toStringTag menyesuaikan teks yang dilaporkan oleh toString lalai untuk sesuatu objek, dan berguna bagi label jenis tersuai.

const widget = {
  [Symbol.toStringTag]: "Widget"
}
console.log(Object.prototype.toString.call(widget))

Symbol.hasInstance

Symbol.hasInstance membolehkan kelas atau objek menyesuaikan tingkah laku operator instanceof.

class Even {
  static [Symbol.hasInstance](num) {
    return num % 2 === 0
  }
}
console.log(4 instanceof Even)
console.log(3 instanceof Even)

Binaan Terbina Dalam Juga Menggunakannya

Tatasusunan, peta, set dan rentetan semuanya melaksanakan Symbol.iterator, sebab itulah kesemuanya berfungsi dengan lancar bersama for-of dan pengembangan.

const set = new Set([1, 2, 3])
console.log([...set])

Mengapa Simbol Ini Penting

Simbol yang diketahui umum ialah titik sambungan: simbol ini membolehkan objek anda bersepadu secara semula jadi dengan operasi bahasa terbina dalam, bukannya dilayan secara khas.

const list = {
  items: ["a", "b"],
  [Symbol.iterator]() {
    return this.items[Symbol.iterator]()
  }
}
for (const x of list) {
  console.log(x)
}

Menemui Simbol Ini

Objek Symbol mendedahkan simbol ini sebagai sifat statik. Anda boleh merujuknya seperti Symbol.iterator dan Symbol.toPrimitive apabila diperlukan.

console.log(typeof Symbol.iterator)
console.log(typeof Symbol.toStringTag)
console.log(typeof Symbol.hasInstance)

Semakan Ringkas

Uji pengetahuan anda tentang simbol yang diketahui umum.

Ringkasan

Ringkasan: Simbol yang diketahui umum menyesuaikan tingkah laku bahasa.

  • Symbol.iterator mengawal for-of dan pengembangan
  • Symbol.toPrimitive mengawal penukaran melalui petunjuk
  • Symbol.toStringTag melabel objek
  • Symbol.hasInstance menyesuaikan instanceof
const r = { [Symbol.iterator]() { let i = 0; return { next() { return i < 2 ? { value: i++, done: false } : { value: 0, done: true } } } } }
console.log([...r])
Percuma untuk bermula

Pelajari JavaScript dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
59
Pelajaran
200

Soalan Lazim

Adakah pelajaran “Symbol yang Diketahui Umum” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Akademi JavaScript, termasuk “Symbol yang Diketahui Umum”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Akademi JavaScript merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Symbol yang Diketahui Umum”?

Sesuaikan tingkah laku dengan Symbol.iterator dan simbol lain. Anda berlatih Akademi JavaScript menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Akademi JavaScript?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Akademi JavaScript di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Symbol yang Diketahui Umum” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Akademi JavaScript ini?

Ya. Setiap pelajaran Akademi JavaScript menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Mencipta Symbol Unik
  2. Symbol sebagai Kunci Objek
  3. Daftar Symbol Global
  4. Symbol yang Diketahui Umum
← Kembali ke Akademi JavaScript