Rumah  >  Artikel  >  hujung hadapan web  >  Ringkasan contoh warisan dalam kemahiran pengaturcaraan_javascript Javascript

Ringkasan contoh warisan dalam kemahiran pengaturcaraan_javascript Javascript

WBOY
WBOYasal
2016-05-16 15:29:181001semak imbas

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();       // 读不到

2. Warisan prototaip/warisan klasik

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();       // %^&%^&%&^%&

3. Pewarisan contoh/corak pembina parasit

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();

4. Salin kaedah pewarisan

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; >

5. Kaedah pusaka bercampur
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

6. Kelebihan dan Kekurangan Pelbagai Hukum Pusaka
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.

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