Dalam pemrograman berorientasi objek, kelas adalah templat kode program yang dapat diperluas untuk membuat objek, memberikan nilai awal untuk status (variabel anggota) dan implementasi perilaku (fungsi atau metode anggota) Show Dalam praktiknya, kita sering perlu membuat banyak objek dengan jenis yang sama, seperti pengguna, atau barang, atau apa pun Seperti yang sudah kita ketahui dari bab Pembuat, operator "baru", 8 dapat membantu dengan ituNamun dalam JavaScript modern, ada konstruksi "kelas" yang lebih canggih, yang memperkenalkan fitur-fitur baru yang hebat yang berguna untuk pemrograman berorientasi objek Sintaks dasarnya adalah _Kemudian gunakan _9 untuk membuat objek baru dengan semua metode yang terdaftarMetode _0 dipanggil secara otomatis oleh 1, sehingga kita dapat menginisialisasi objek di sanaSebagai contoh
Ketika _2 dipanggil
…Kemudian kita dapat memanggil metode objek, seperti 5Tidak ada koma di antara metode kelas Jebakan umum untuk pengembang pemula adalah menempatkan koma di antara metode kelas, yang akan menghasilkan kesalahan sintaksis Notasi di sini jangan disamakan dengan literal objek. Di dalam kelas, koma tidak diperlukan Jadi, apa sebenarnya _6? Mari ungkap keajaiban apa pun dan lihat apa sebenarnya kelas itu. Itu akan membantu dalam memahami banyak aspek kompleks Dalam JavaScript, kelas adalah sejenis fungsi Di sini, lihatlah
Apa yang _7 benar-benar dilakukan adalah
Setelah _2 objek dibuat, ketika kita memanggil metodenya, itu diambil dari prototipe, seperti yang dijelaskan dalam bab F. prototipe. Jadi objek memiliki akses ke metode kelasKita dapat mengilustrasikan hasil deklarasi _3 sebagaiIni kode untuk mengintrospeksinya
Kadang-kadang orang mengatakan bahwa _6 adalah "gula sintaksis" (sintaks yang dirancang untuk membuat sesuatu lebih mudah dibaca, tetapi tidak memperkenalkan sesuatu yang baru), karena kita sebenarnya dapat mendeklarasikan hal yang sama tanpa menggunakan kata kunci 6 sama sekali
Hasil dari definisi ini hampir sama. Jadi, memang ada alasan mengapa _6 dapat dianggap sebagai gula sintaksis untuk mendefinisikan konstruktor bersama dengan metode prototipenyaTetap saja, ada perbedaan penting
Selain itu, sintaks 6 membawa banyak fitur lain yang akan kita jelajahi nantiSama seperti fungsi, kelas dapat didefinisikan di dalam ekspresi lain, diedarkan, dikembalikan, ditugaskan, dll Berikut adalah contoh ekspresi kelas
Mirip dengan Ekspresi Fungsi Bernama, ekspresi kelas mungkin memiliki nama Jika ekspresi kelas memiliki nama, itu hanya terlihat di dalam kelas
Kita bahkan bisa membuat kelas secara dinamis “sesuai permintaan”, seperti ini
Sama seperti objek literal, kelas dapat menyertakan getter/setter, properti yang dihitung, dll Berikut adalah contoh untuk _6 diimplementasikan menggunakan 7 0Secara teknis, deklarasi kelas tersebut berfungsi dengan membuat getter dan setter di 1Berikut adalah contoh dengan nama metode yang dihitung menggunakan tanda kurung 9 _1Fitur seperti itu mudah diingat, karena mirip dengan objek literal Browser lama mungkin memerlukan polyfill Bidang kelas adalah tambahan terbaru untuk bahasa Sebelumnya, kelas kami hanya memiliki metode "Bidang kelas" adalah sintaks yang memungkinkan untuk menambahkan properti apa pun Misalnya, mari tambahkan properti _0 ke 3 _2Jadi, kami hanya menulis "=" di deklarasi, dan hanya itu Perbedaan penting dari bidang kelas adalah bahwa mereka ditetapkan pada objek individual, bukan 1 _3Kami juga dapat menetapkan nilai menggunakan ekspresi dan pemanggilan fungsi yang lebih kompleks _4Seperti yang ditunjukkan dalam bab Fungsi pengikatan fungsi dalam JavaScript memiliki 3 dinamis. Itu tergantung pada konteks panggilanJadi jika metode objek diedarkan dan dipanggil dalam konteks lain, 3 tidak akan menjadi referensi ke objeknya lagiMisalnya, kode ini akan menampilkan 5 5Masalahnya disebut "kehilangan 3"Ada dua pendekatan untuk memperbaikinya, seperti yang dibahas di bab Pengikatan fungsi
Bidang kelas menyediakan sintaks lain yang cukup elegan _6Bidang kelas 8 dibuat per objek, ada fungsi terpisah untuk setiap objek 9, dengan 3 di dalamnya merujuk objek itu. Kita dapat melewati 1 di mana saja, dan nilai 3 akan selalu benarItu sangat berguna di lingkungan browser, untuk event listener Sintaks kelas dasar terlihat seperti ini _7 3 secara teknis adalah fungsi (salah satu yang kami berikan sebagai 3), sedangkan metode, pengambil dan penyetel ditulis ke 5
Bisakah Anda membuat kelas dalam JavaScript?Untuk membuat kelas, Anda menggunakan kata kunci class . Di dalam kelas, kami membuat fungsi konstruktor, yang mendefinisikan semua properti awal. Berbeda dengan objek kita di atas, class adalah template untuk membuat objek. Semua properti dalam fungsi konstruktor akan ditambahkan secara otomatis ke objek baru Anda.
Mengapa kelas tidak digunakan dalam JavaScript?Objek yang didefinisikan dengan kelas harus secara eksplisit menggunakan kata kunci 'ini' . Jika Anda meneruskan metode kelas ke panggilan balik, Anda bisa mengalami masalah yang mengikat. Inilah mengapa Anda akan melihat banyak kode di mana metode harus terikat dengan konteks yang benar.
Bagaimana cara mengatur kelas dalam JavaScript?Untuk mengubah semua kelas untuk suatu elemen. getElementById("ElementSaya"). className = "MyClass"; (Anda dapat menggunakan daftar yang dibatasi spasi untuk menerapkan beberapa kelas. )
Haruskah saya membuat kelas dalam JavaScript?Dalam JavaScript, Anda tidak . Anda dapat menulis program apa pun yang Anda inginkan tanpa menggunakan kelas atau kata kunci this ever. Memang, sintaks kelas agak baru untuk JavaScript, dan kode berorientasi objek ditulis dengan fungsi sebelumnya. Sintaks kelas hanyalah gula sintaksis di atas pendekatan berbasis fungsi untuk OOP. |