Rumah  >  Artikel  >  hujung hadapan web  >  3 kaedah dan contoh kod untuk melaksanakan pewarisan dalam kemahiran Javascript_javascript

3 kaedah dan contoh kod untuk melaksanakan pewarisan dalam kemahiran Javascript_javascript

WBOY
WBOYasal
2016-05-16 16:39:521029semak imbas

Warisan ialah cara yang sangat penting apabila kita melaksanakan pengaturcaraan berorientasikan objek. Walaupun kita mengatakan bahawa kita tidak boleh terlalu mewarisi dan menggunakan komposisi dan bukannya warisan, warisan sentiasa tidak dapat dielakkan. Apa yang ingin kita bincangkan di sini ialah mekanisme pewarisan dalam Javascript.

Sebenarnya tiada konsep pewarisan dalam Javascript, tetapi kita boleh menirunya melalui beberapa cara. Warisan jenis ini sebenarnya menyalin satu objek ke objek lain. Anda perlu ambil perhatian bahawa semua kelas tempatan dan kelas hos tidak boleh diwarisi sebagai kelas asas, terutamanya atas sebab keselamatan.

Terdapat kira-kira tiga jenis warisan dalam Javascript: 1. Penyamaran objek 2. Warisan prototaip 3. Campuran kedua-duanya.

1. Penyamaran objek

Malah, penyamaran objek berkait rapat dengan kata kunci ini (jadi sangat penting untuk memahami sepenuhnya kata kunci ini dalam Javascript :P). Pembina menggunakan ini untuk menetapkan nilai kepada sifat dan kaedah, dan pembina juga boleh dianggap sebagai fungsi biasa, jadi kita boleh menjadikan pembina kelas asas kita sebagai pembina subkelas, dan kemudian memanggilnya di dalam fungsi subkelas , maka subkelas akan mendapat atribut dan kaedah kelas induk.

Prinsipnya sangat mudah, jadi bagaimana kita melaksanakannya? Di bawah ialah contoh kod untuk operasi sebenar.

Kaedah pelaksanaan penyamaran objek 1, kaedah kami yang paling biasa digunakan untuk mencipta objek baharu:

Salin kod Kod adalah seperti berikut:

var classA = function(nama){
this.name = nama;
this.alertName = function(){
makluman(nama.ini);
}
}

var classB = function(nama,umur){
this.myConstructor = kelasA;
this.myConstructor(nama);
padamkan ini.myConstructor;

this.age = umur;
this.alertAge = function(){
makluman(usia ini);
}
}

Untuk mengesahkan sama ada kaedah di atas adalah betul, anda boleh mengujinya sendiri saya akan menulis kod ujian di bawah:

Salin kod Kod adalah seperti berikut:

var objA = kelas baharu('DK');
objA.alertName();//DK

var objB = new classB('DS',20);

objB.alertName();//DS
objB.alertAge();//20

Inilah yang dipanggil penyamaran objek Selain itu, terdapat dua cara lain untuk melaksanakan penyamaran objek Walaupun kaedah pelaksanaannya berbeza, prinsipnya adalah sama.

Kaedah pelaksanaan penyamaran objek 2, gunakan kaedah panggilan:

Salin kod Kod adalah seperti berikut:

var classA = function(nama){
this.name = nama;
this.alertName = function(){
makluman(nama.ini);
}
}

var classB = function(nama,umur){
classA.call(ini,nama);

this.age = umur;
this.alertAge = function(){
makluman(usia ini);
}
}

Ia juga boleh dilihat daripada kod Dalam kaedah pertama, kami mencipta penuding fungsi baharu yang menunjuk ke kelas induk, memanggil fungsi itu, dan kemudian memadam penuding. Di sini kita menggunakan kaedah panggilan untuk menjalankan pembina kelas induk di bawah objek ini untuk mencapai tujuan yang sama. Di samping itu, bertentangan dengan kaedah panggilan ialah kaedah memohon.

Kaedah pelaksanaan penyamaran objek tiga , gunakan kaedah guna:

Salin kod Kod adalah seperti berikut:

var classA = function(nama){
this.name = nama;
this.alertName = function(){
makluman(nama.ini);
}
}

var classB = function(nama,umur){
classA.apply(this,new Array(name));

this.age = umur;
this.alertAge = function(){
makluman(usia ini);
}
}

Malah, anda dapat melihat bahawa kaedah apply sangat serupa dengan kaedah panggilan, kecuali parameter yang diluluskan sedikit berbeza.

2. Warisan prototaip

Semua orang harus mengetahui sesuatu tentang objek prototaip Semua sifat dan kaedah pada objek prototaip akan dihantar kepada semua kejadian kelas Jadi apabila kita membayar semua sifat dan kaedah kelas induk kepada objek prototaip subkelas , iaitu Ia bersamaan dengan merealisasikan warisan kita.

Jika subkelas ingin mendapatkan semua atribut dan kaedah kelas induk, maka kami membayar contoh kelas induk terus kepada objek prototaip subkelas Kemudian subkelas kami adalah bersamaan dengan mendapatkan semua objek dan kaedah kelas ibu bapa?

Perkhidmatan sampel kod:

Salin kod Kod adalah seperti berikut:

var classA = function(){
this.name = 'DK';
this.alertName = function(){
makluman(nama.ini);
}
}

var classB = function(nama,umur){
this.name = nama;
this.age = umur;
}

classB.prototype = new classA();

classB.prototype.alertAge = function(){
makluman(usia ini);
}

Perhatikan bahawa pembina kelas induk di sini perlu memastikan bahawa tiada parameter. Kerana walaupun terdapat parameter pembinaan, anda tidak boleh melepasinya =.=!

apabila melaksanakan pewarisan prototaip

3. Pusaka bercampur

Seperti namanya, warisan bercampur ialah gabungan dua kaedah pertama.

Salin kod Kod adalah seperti berikut:

var classA = function(nama){
this.name = nama;
}

classA.prototype.alertName = function(){
makluman(nama.ini);
}

var classB = function(nama,umur){
classA.call(ini,nama);
this.age = umur;
}

classB.prototype = new classA();

classB.prototype.alertAge = function(){
makluman(usia ini);
}

Gunakan penyamaran objek untuk menghantar parameter kepada kelas induk dan gunakan warisan prototaip untuk mewarisi kaedah awam.

Sekarang kita telah bercakap mengenai ketiga-tiga kaedah pewarisan ini, tiba masanya untuk membincangkan masalah tersebut.

Anda mungkin tertanya-tanya mengapa terdapat penyamaran objek dan pewarisan prototaip, tetapi masih terdapat beberapa warisan hibrid Ya, perkara yang paling penting ialah masalah ini.

1. Jika anda benar-benar mengujinya, anda akan mendapati bahawa melalui pewarisan melalui penyamaran objek, subkelas tidak boleh mengakses kaedah pada rantaian prototaip kelas induk.

2. Menggunakan warisan prototaip akan menukar semua sifat menjadi sifat kongsi Jika anda melaksanakan dua kejadian subkelas yang sama, anda akan mendapati bahawa semua kejadian anda berkongsi semua sifat.

3 Tetapi ini pastinya tidak sesuai. Jadi terdapat warisan hibrid, yang membolehkan sifat kekal peribadi sambil membenarkan subkelas mengakses kaedah rantai prototaip kelas induk.

Anda boleh mencuba sendiri apabila objek berpura-pura diwarisi, subkelas tidak boleh mengakses kaedah rantaian prototaip kelas induk. Saya tidak akan menulis contoh di sini.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn