Seiring perkembangan zaman, semakin banyak kerangka kerja bagus yang muncul di kamp JavaScript, yang sangat menyederhanakan pekerjaan pengembangan kita. Saat kita menggunakan kerangka kerja ini, haruskah kita juga memikirkan asal usulnya dan memikirkan cara pembuatannya? Jika Anda tidak puas hanya dengan menggunakan beberapa API yang sudah jadi, tetapi memiliki pemahaman mendalam tentang mekanisme implementasi internalnya (menurut seseorang, API adalah hal yang paling cepat terdepresiasi), cara terbaik adalah membaca kode sumbernya agar kamu bisa membacanya.
Saya telah mempelajari kode sumber jQuery dalam dua hari terakhir, dan di sini saya akan membagikan beberapa pengetahuan dangkal saya. Mohon koreksi saya jika saya tidak tepat. Oke, mari kita lihat cara kerja jQuery. Saya berasumsi Anda sudah memiliki pengetahuan dasar tentang JavaScript. Jika dasar-dasarnya belum cukup, saya sarankan Anda membaca dua buku "Pemrograman Tingkat Lanjut JavaScript" dan Buku "Memahami JavaScript". Artikel ini kurang cocok bagi sobat yang belum memahami konsep seperti class, objek, fungsi, prototype, dll di js.
Mari kita mulai dari awal:
Pertama buatlah objek untuk pengguna, dengan asumsi kerangka kerja kita bernama Shaka (nama saya;))
var Shaka = function(){}; Di sini kita membuat fungsi kosong tanpa apa pun di dalamnya. Agar objek yang kita hasilkan memanggil metode yang ditentukan dalam prototipe, kita perlu menambahkan beberapa metode ke Shaka menggunakan prototipe (anggap Shaka sebagai sebuah kelas), jadi kita definisikan:
Shaka.fn = Shaka.prototipe = {};
Shaka.fn di sini setara dengan alias Shaka.prototype untuk penggunaan di masa mendatang.
Oke kita tambahkan method sayHello dan tambahkan parameter pada Shaka, sehingga tampilan paling dasar dari framework ini sudah ada. Kalau sudah hidup, sekarang sudah berumur 1 tahun. Lihat kodenya:
Jalankan kotak kode
[Ctrl+A Pilih Semua Tip: Anda dapat memodifikasi sebagian kode terlebih dahulu lalu tekan Jalankan]
Oke, jangan terlalu bersemangat. Kami melihat ada beberapa perbedaan dalam penggunaan framework ini dan jQuery. Misalnya, di jq kita bisa menulis seperti ini:
jQuery('#myid').someMethod();
Bagaimana ini dilakukan, yaitu, konstruktor jQuery() mengembalikan instance objek jQuery, sehingga kita dapat memanggil metodenya, jadi konstruktor Shaka harus mengembalikan sebuah instance, dan seharusnya terlihat seperti ini:
var Shaka = function(){ return //Mengembalikan instance Shaka };
Jadi bagaimana kita mendapatkan instance Shaka? Mari kita tinjau dulu saat menggunakan prototipe untuk mensimulasikan kelas. var someObj = new MyClass(); Saat ini, kita sebenarnya membuat objek baru someObje dan menggunakan objek baru sebagai panggilan penunjuk ini fungsi MyClass, yang merupakan konstruktor kelas, dan kemudian someObj memperoleh metode yang ditentukan dalam MyClass.prototype. Penunjuk ini dalam metode ini merujuk ke instance objek saat ini.