Contoh dalam artikel ini menerangkan warisan pengaturcaraan Javascript. Kongsikan dengan semua orang untuk rujukan anda, butirannya adalah seperti berikut:
Teks ini adalah ringkasan selepas membaca "The Return of the Javascript King".
Warisan secara amnya melaksanakan tiga peringkat makna berikut:1) Kejadian subkelas boleh berkongsi kaedah kelas induk; 2) Subkelas boleh mengatasi kaedah kelas induk atau melanjutkan kaedah baharu; 3) Kedua-dua subkelas dan kelas induk adalah jenis contoh subkelas.
1. Kaedah pewarisan struktur
Subkelas memanggil pembina kelas induk untuk mengekalkannya Kaedah pewarisan ini boleh mencapai berbilang warisan, tetapi ia hanya boleh mewarisi kaedah biasa kelas induk, tidak boleh mewarisi kaedah statik dan instanceof tidak boleh digunakan untuk mengesahkan. contoh.
function a(){ this.say=function(){ alert("happy new year!"); } } function b(){ a.apply(this,arguments); } a.prototype.fuck=function(){ alert("%^&%^&%&^%&"); } var oB=new b(); alert(oB instanceof a);// false oB.say(); // happy new year oB.fuck(); // 读不到
Kaedah warisan ini mencapai penggunaan semula tingkah laku dengan menyalin objek prototaip sedia ada, membenarkan tika objek berkongsi sifat objek prototaip. Menyokong berbilang warisan, mewarisi kaedah statik prototaip, dan boleh menggunakan instanceof untuk mengesahkan kejadian.
function a(){ this.say=function(){ alert("happy new year!"); } } function b(){} a.prototype.fuck=function(){ alert("%^&%^&%&^%&"); } a.prototype.z=123; b.prototype=new a(); var oB=new b(); alert(oB instanceof a); // true alert(oB.z); // 123 oB.say(); // happy new year oB.fuck(); // %^&%^&%&^%&
Kaedah pembinaan tidak boleh mewarisi kaedah statik jenis dan warisan prototaip tidak lengkap (kaedah tidak terhitung beberapa objek teras tidak boleh diwarisi), manakala kaedah warisan contoh boleh mewarisi objek teras asli atau objek DOM . Ia menggunakan jenis Inheritance yang dilaksanakan dengan membina objek dan mengembalikannya, jadi instanceof verification akan palsu dan berbilang warisan tidak disokong.
function a(){ var oA=new Array(); oA.say=function(){ alert("hello A!"); } return oA; } var obj=new a(); alert(obj instanceof a); // false obj.say();
Kaedah ini mensimulasikan warisan dengan menyalin semua sifat terhitung dan kaedah objek kelas asas, jadi ia boleh mensimulasikan warisan berbilang, tetapi kaedah yang tidak boleh dikira tidak boleh diwarisi; >
function a(){ this.num=123; this.say=function(){ alert("happy new year!"); } } function b(){ this.extends=function(obj){ for(each in obj){ this[each]=obj[each]; } } } var oB=new b(); oB.extends(new a()); alert(oB instanceof a); // false alert(oB.num); // 123 oB.say(); // happy new year
Seperti namanya, ia adalah untuk menggabungkan kaedah pewarisan di atas untuk belajar daripada kekuatan masing-masing dan menjadikan pewarisan lebih sempurna. Yang biasa termasuk warisan prototaip struktur: warisan pseudo-klasik
function a(){ this.num=123; this.say=function(){ alert("happy new year!"); } } function b(){ a.apply(this); } b.prototype=new a(); b.prototype.z=123; var oB=new b(); alert(oB instanceof a); // true alert(oB.num); // 123 oB.say(); // happy new year
Saya harap artikel ini akan membantu semua orang dalam pengaturcaraan JavaScript.