Sejauh saya memahami kedua konsep, saya tidak bisa melihat bagaimana saya bisa mengambil keuntungan dari penutupan JavaScript dan prototipe selain menggunakannya untuk membuat blok kelas-suka seperti / dan enkapsulasi (yang tampaknya lebih merupakan solusi daripada aset bagi saya )
Fitur JS lainnya seperti fungsi-nilai-atau evaluasi logis dari non-boolean jauh lebih mudah untuk jatuh cinta dengan ...
Apa masalah pemrograman umum yang paling baik diselesaikan dengan menggunakan pewarisan dan penutupan propotypal?
Jawaban:
Penutupan inilah yang menjadikan fungsi sebagai nilai yang berguna. Ketika Anda melewati fungsi, Anda hampir pasti membutuhkannya untuk membawa beberapa konteks. Itulah tepatnya yang dilakukan penutupan.
Prototipe hanyalah versi sederhana dari pewarisan kelas. Alih-alih memiliki instance dan kelas (diwakili oleh jenis instance khusus dalam bahasa dinamis), Anda hanya memiliki instance dan prototipe adalah kelas (dan prototipe itu adalah kelas dasar). Jadi mereka pada dasarnya memecahkan masalah yang sama, hanya prototipe yang lebih mudah untuk diimplementasikan (itu sebabnya JavaScript memilih mereka), agak sulit untuk digunakan (yah, hanya kekurangan gula sintaksis) dan untuk lebih baik atau lebih buruk lebih mudah untuk penyalahgunaan.
sumber
void* data
argumen yang akan diturunkan oleh fungsi yang dipanggil.Penutupan tidak memecahkan masalah pemrograman yang tidak dapat diselesaikan tanpa mereka. Namun, ini dapat dikatakan untuk fitur bahasa apa pun yang tidak diperlukan untuk kelengkapan Turing, sehingga tidak banyak berarti.
Pikirkan tentang bagaimana Anda harus menulis ulang kode apa pun yang menggunakan penutupan, untuk tidak menggunakan penutupan. Anda mungkin akan memberikan fungsi dengan properti tambahan penutupan sehingga bisa menahan keadaan di antara panggilan. Yang hanya akan menyalin variabel yang sudah dalam lingkup ke properti dengan nama yang sama pada fungsi, jadi itu akan menjadi jenis latihan mengetik tanpa berpikir yang membuat Anda ingin berteriak di layar "mengapa kompiler bodoh ( penerjemah, terserahlah). Yang ini apa penutupan yang, compiler bodoh adalah cukup pintar untuk angka itu.
sumber
Penutupan bagus untuk logika asinkron.
Ini terutama tentang pengorganisasian kode untuk saya. Memiliki banyak fungsi lokal untuk membagi apa yang dikerjakan kode itu bagus.
Berikut ini contoh lain dari penutupan
Dan contoh lainnya
Alternatif untuk menggunakan closure adalah mengubah variabel menjadi fungsi menggunakan
f.bind(null, curriedVariable)
.Namun secara umum, logika pemrograman asinkron menggunakan panggilan balik dan memanipulasi keadaan dalam panggilan balik bergantung pada currying atau penutupan. secara pribadi saya lebih suka penutupan.
Adapun penggunaan pewarisan prototypical, memungkinkan OO? Apakah warisan prototipe benar-benar perlu melakukan lebih dari itu agar dianggap "berguna". Ini alat warisan, memungkinkan warisan, itu cukup berguna.
sumber