Ada prinsip terkenal untuk penggunaan kembali kode, yang diusulkan oleh GOF: Prioritas digunakan untuk menggunakan kombinasi objek daripada warisan kelas. Dalam JavaScript, tidak ada konsep kelas, jadi penggunaan kembali kode tidak terbatas pada warisan kelas. Ada banyak cara untuk membuat objek di JavaScript, termasuk konstruktor, Anda dapat menggunakan yang baru untuk membuat objek, dan Anda dapat secara dinamis memodifikasi objek. Ada juga banyak metode untuk menggunakan kembali pewarisan yang tidak diklasifikasikan (yang dapat disebut mode warisan modern) dalam JavaScript, seperti menggabungkan objek lain menjadi objek yang diperlukan, teknologi pencampuran objek, meminjam dan menggunakan kembali metode yang diperlukan.
Mode default mode warisan klasik
Contoh dua konstruktor orang tua dan anak:
Salinan kode adalah sebagai berikut:
Function Parent (Name) {
this.name = name || "Adam";
}
Parent.prototype.say = {
kembalikan nama ini;
};
function child (name) {
}
warisan (anak, orang tua);
Berikut ini adalah metode implementasi fungsi warisan yang dapat digunakan kembali ():
Salinan kode adalah sebagai berikut:
fungsi warisan (c, p) {
C.prototype = p baru ();
}
Di sini properti prototipe harus menunjuk ke suatu objek, bukan fungsi, jadi harus menunjuk ke instance yang dibuat oleh konstruktor induk, bukan ke konstruktor itu sendiri.
Setelah ini, saat membuat objek anak, ia akan mendapatkan fungsinya dari instance induk melalui prototipe:
Salinan kode adalah sebagai berikut:
var anak = anak baru ();
kid.say (); // "Adam"
Panggil rantai prototipe yang diwariskan:
Selanjutnya tambahkan sifat anak:
Salinan kode adalah sebagai berikut:
var anak = anak baru ();
kid.name = "Patrick";
kid.say (); // "Patrick"
Perubahan rantai prototipe:
Anda dapat menemukan nama di properti objek Anda, jadi Anda tidak perlu mencari rantai prototipe lagi.
Salah satu kelemahan menggunakan pola di atas adalah bahwa ia mewarisi sifat -sifat dua objek secara bersamaan, yaitu sifat yang ditambahkan ke ini dan sifat prototipe. Sebagian besar waktu, atribut diri ini tidak diperlukan.
Kerugian lain adalah bahwa menggunakan warisan () warisan () warisan tidak mendukung parameter yang lewat ke subkonstruktur, misalnya:
Salinan kode adalah sebagai berikut:
var s = anak baru ("seth");
S.Say (); // "Adam"
Hasil ini tidak diharapkan. Meskipun konstruktor anak dapat meneruskan parameter ke dalam konstruktor induk, mekanisme warisan ini harus dieksekusi ulang setiap kali objek anak diperlukan, dan tidak efisien karena objek induk pada akhirnya akan diciptakan kembali.
Artikel ini berakhir di sini. Kami akan terus memperbarui mode yang tersisa dari mode penggunaan kembali kode JavaScript di masa mendatang.