Properti enumerable dalam JavaScript berarti bahwa properti dapat dilihat jika diulang menggunakan for…in loop atau Object. kunci() metode. Semua properti yang dibuat dengan penugasan sederhana atau penginisialisasi properti dapat dihitung secara default. Show Contoh 1. javascript
true true true false0 true true true false1 true true true false2
true true true false4 true true true false5 true true true false2
// This will not print the property // Who's enumerable property is set to false for (const key in student){ console.log(key) }0
// This will not print the property // Who's enumerable property is set to false for (const key in student){ console.log(key) }2
// This will not print the property // Who's enumerable property is set to false for (const key in student){ console.log(key) }5
// This will not print the property // Who's enumerable property is set to false for (const key in student){ console.log(key) }7 // This will not print the property // Who's enumerable property is set to false for (const key in student){ console.log(key) }8 // This will not print the property // Who's enumerable property is set to false for (const key in student){ console.log(key) }9 registration name age0
registration name age2
registration name age4 registration name age5 Keluaran registration name age marks Contoh 2. Karena semua properti diinisialisasi oleh penginisialisasi properti, semuanya memiliki enumerable yang disetel ke true secara default. Untuk secara eksplisit mengubah atribut enumerable internal dari sebuah properti, Object. metode defineProperty() digunakan. Juga, untuk memeriksa apakah suatu properti dapat dihitung atau tidak, kami menggunakan fungsi propertyIsEnumerable(). Mengembalikan nilai true jika properti dapat dihitung atau false sebaliknya. HTMLregistration name age6 registration name age7 registration name age8
// This will not print the property // Who's enumerable property is set to false for (const key in student){ console.log(key) }2
registration name age7 registration name age8 Keluaran true true true false catatan. Properti yang dibuat menggunakan metode defineProperty() memiliki flag enumerable yang disetel ke false. Ketika kode yang sama di atas dijalankan menggunakan perulangan for, properti “marks” tidak terlihat objek. defineProperty() juga memungkinkan Anda membuat properti hanya-baca seperti yang kita lihat di bawah, kita tidak dapat mengubah nilai gaji dari objek person. Untuk membuat properti salary enumerable, tetapkan true ke key bernama enumerableDalam 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) WikipediaPada kenyataannya, kita sering membutuhkan sesuatu untuk membuat banyak objek yang memiliki kemiripan, seperti pengguna, atau benda-benda lainnya seperti buah-buahan, binatang, kendaraan, dan sesuatu yang biasanya bisa dikelompokan Seperti yang kita ketahui dari bab Konstruktor, operator "new", _8 dapat membantu kita membuatnyaNamun pada Javascript modern, ada cara pembuatan “class” yang lebih lanjut, yang akan memperkenalkan fitur-fitur yang sangat berguna untuk pemograman berbasis objek/object oriented Sintaks dasarnya adalah
Kemudian kita gunakan _9 untuk menciptakan sebuah objek baru dengan semua metode yang sudah melebarMethod 0 secara otomatis terpanggil oleh _1, jadi kita dapat menginisialisasi sebuah objek dengannyaContohnya
Ketika _2 kata bahasa lanka
…Lalu kita dapat memanggil objek metode, seperti 4Tidak boleh ada koma di antara kelas metode Kesalahan umum bagi pemula biasanya dengan memberikan koma diantara class method, yang nantinya akan menghasilkan sintaks eror Notasi disini jangan disamakan dengan objek literal. Di dalam kelas, tidak perlu ada koma Jadi apa sih sebenarnnya 5 itu ? Mari kita uraikan dan lihat apa sebenarnya kelas itu. Yang nantinya akan membantu untuk memahami berbagai aspek yang lebih rumit Katakanlah Javascript, sebuah kelas itu merupakan sesuatu yang mirip fungsi Yuk kita lihat disini
Apa yang konstruktor _6 sebenarnya lakukan
Setelah objek 1 terbentuk, ketika kita memanggil metode tersebut, itu akan mengambil dari prototypenya, seperti yang dijelaskan pada bab F. prototipe. Sehingga objek tersebut memiliki akses pada method class nyaKita dapat mengilustrasikan hasil dari deklrasi 2 seperti berikutMari kita bedah kode tersebut
Terkadang orang-orang mengatakan bahwa _5 adalah sebuah _4 (sintaks yang diciptakan untuk membuat mudah dibaca, tapi tidak ada sesuatu yang baru didalamnya), karena sebenarnya kita dapat mendeklasikan objek tanpa menggunakan sintaks 5 sama sekali
Hasil dari pendefinisian berikut adalah sama. Jadi memang ada alasan mengapa _5 dapat dianggap sebagai pemanis sintaks untuk pendefinisian konstruktor bersamaan dengan method prototype-nyaTetap saja, ada perbedaan penting
Selain itu, sintaks 5 menghadirkan banyak fitur lain yang akan kami bahas nantinyaSama seperti fungsi, kelas dapat didefinisikan denga ekspresi lain, diturunkan, dikembalikan, ditata, dll Berikut adalah contoh ekspresi kelas
Mirip dengan fungsi Expressions yang memiliki nama, class expression juga mungkin memiliki nama Jika sebuah class expression memiliki nama, itu hanya terlihat di dalam class tersebut
Kita bahkan dapat membuat kelas secara dinamis “sesuai permintaan”, seperti berikut
Sama seperti objek literal, class dapat menyertakan getter/setter serta properti yang telah diproses, dll Berikut adalah sebuah contoh untuk 6 dengan implementasi menggunakan 7 0Secara teknis, deklarasi kelas tersebut bekerja dengan membuat pengambil dan penyetel didalam 0Berikut adalah sebuah contoh menggunakan method pada nama yang telah diproses pada bracket 9 1Fitur seperti itu mudah diingat, karena mirip dengan objek literal Browser lama mungkin membutuhkan polyfill Bidang kelas adalah tambahan terbaru pada bahasa ini… Sebelumnya, kelas ini hanya memiliki method “Class field” adalah sebuah sintaks yang memungkinkan untuk menambahkan properti apa pun Sebagai contoh, mari kita tambahkan properti 0 pada 2 2Jadi, kita hanya perlu menulis "=" pada saat proses deklarasi Perbedaan penting pada class field adalah bahwa class field tersebut diatur untuk objek individual, bukan pada 0 3Kita juga dapat menetapkan nilai menggunakan ekspresi yang lebih kompleks dan memanggil fungsi 4Seperti yang ditunjukkan pada bab Jadi, jika metode objek diteruskan dan dipanggil pada konteks lain, 3 tidak akan menjadi referensi ke objek itu lagiSebagai contoh, kode dibawah ini akan menampilkan output 5 5Masalah itu terjadi karena memanggil 3 pada konteks lainTerdapat dua pendekatan cara untuk memperbaikinya, seperti yang telah kami diskusikan pada bab Function binding
Class field menyediakan sintaks lain yang cukup elegan 6Class field ini _8 dibuat pada dasar tiap objek, ada sebuah fungsi terpisah pada tiap 9 objek, dengan 3 di dalamnya mereferensikan objek tersebut. Kita dapat melanjutkan 1 di mana saja, dan nilai 3 akan selalu benarItu akan sangat berguna pada lingkungan browser, terutama untuk event listener Sintaks class dasar terlihat seperti ini 7 3 secara teknis adalah sebuah fungsi (yang kita sediakan sebagai _4), sedangkan method, getter, dan setter ditulis ke 5Pada bab selanjutnya kita akan mempelajari lebih lanjut tentang kelas, termasuk pewarisan dan fitur lainnya |