Warisan dan warisan lain dalam petua JavaScript_javascript

PHP中文网
Lepaskan: 2016-05-16 15:02:53
asal
1655 orang telah melayarinya

Pengenalan Warisan

Warisan dalam JS ialah topik yang sangat kompleks, jauh lebih kompleks daripada warisan dalam mana-mana bahasa berorientasikan objek lain. Dalam kebanyakan bahasa berorientasikan objek lain, mewarisi daripada kelas memerlukan hanya satu kata kunci. Bagi mencapai tujuan mewarisi ahli awam di JS, beberapa langkah perlu diambil. JS tergolong dalam warisan prototaip Terima kasih kepada fleksibiliti ini, kita boleh menggunakan sama ada warisan berasaskan kelas standard atau warisan prototaip yang lebih halus. Perlu jelas dalam JS bahawa semua warisan dilakukan melalui prototaip, dan JS mewarisi berdasarkan objek.

Diwarisi:

function Animal(name){ 
this.name = name; 
this.showName = function(){ 
alert(this.name); 
} 
} 
function Cat(name){ 
Animal.call(this, name); 
} 
var cat = new Cat("Black Cat"); 
cat.showName();
Salin selepas log masuk

Haiwan.panggilan(ini) bermaksud Jika anda gunakan objek Haiwan dan bukannya objek ini, maka Kucing mempunyai semua sifat dan kaedah Haiwan. Objek Kucing boleh terus memanggil kaedah dan sifat Haiwan. >

Ia sangat mudah, menggunakan dua panggilan untuk mencapai berbilang warisan

function Class10() 
{ 
this.showSub = function(a,b) 
{ 
alert(a-b); 
} 
} 
function Class11() 
{ 
this.showAdd = function(a,b) 
{ 
alert(a+b); 
} 
} 
function Class2() 
{ 
Class10.call(this); 
Class11.call(this); 
}
Salin selepas log masuk
Sudah tentu, warisan js Terdapat yang lain kaedah, seperti menggunakan rantaian prototaip Ini bukan dalam skop artikel ini saya hanya menerangkan penggunaan panggilan di sini. Bercakap tentang panggilan, dan sudah tentu terpakai, kedua-dua kaedah ini pada asasnya bermaksud perkara yang sama Perbezaannya ialah parameter panggilan kedua boleh daripada sebarang jenis, manakala parameter kedua permohonan mestilah tatasusunan atau hujah.

Izinkan saya memperkenalkan kepada anda cara melaksanakan warisan mudah dalam JavaScript?

Contoh berikut akan mencipta Pekerja kelas pekerja, yang mewarisi semua sifat dalam prototaip prototaip daripada Person.

Pelaksanaan warisan di atas sangat kasar dan terdapat banyak masalah:

function Employee(name, sex, employeeID) {
this.name = name;
this.sex = sex;
this.employeeID = employeeID;
}
// 将Employee的原型指向Person的一个实例
// 因为Person的实例可以调用Person原型中的方法, 所以Employee的实例也可以调用Person原型中的所有属性。
Employee.prototype = new Person();
Employee.prototype.getEmployeeID = function() {
return this.employeeID;
};
var zhang = new Employee("ZhangSan", "man", "");
console.log(zhang.getName()); // "ZhangSan
Salin selepas log masuk
Apabila mencipta pembina Pekerja dan prototaip (selepas ini dirujuk sebagai kelas), Orang dijadikan instantiated, yang tidak sesuai.

Pembina Pekerja tidak boleh memanggil pembina kelas induk Orang, menyebabkan penetapan nama dan atribut jantina berulang dalam pembina Pekerja.


Fungsi dalam Pekerja akan menimpa fungsi nama yang sama dalam Orang, dan tiada mekanisme lebihan beban (ini adalah jenis masalah yang sama seperti yang sebelumnya).


Sintaks untuk mencipta kelas JavaScript terlalu berpecah-belah dan tidak seanggun sintaks dalam C#/Java.


Terdapat ralat penunjuk dalam atribut pembina dalam pelaksanaan.

Di atas ialah kandungan warisan dalam JavaScript dan teknik inheritance_javascript yang lain Untuk kandungan yang lebih berkaitan, sila perhatikan laman web PHP Cina (m.sbmmt.com)!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan