Rumah  >  Artikel  >  hujung hadapan web  >  Analisis penggunaan warisan pembina yang boleh digunakan dalam kemahiran js package_javascript

Analisis penggunaan warisan pembina yang boleh digunakan dalam kemahiran js package_javascript

WBOY
WBOYasal
2016-05-16 16:17:331081semak imbas

Contoh dalam artikel ini menerangkan penggunaan warisan pembina yang boleh digunakan dalam enkapsulasi js. Kongsikan dengan semua orang untuk rujukan anda. Butirannya adalah seperti berikut:

Mari kita lihat kod berikut dahulu

Kaedah yang digunakan oleh perpustakaan (YUI):

Salin kod Kod tersebut adalah seperti berikut:
fungsi lanjutkan(Anak, Ibu Bapa) {

 var F = function(){};
  F.prototaip = Induk.prototaip;
  Child.prototype = F();
​Child.prototype.constructor = Kanak-kanak;
  Child.uber = Ibu bapa.prototaip;
}

Terdapat juga kaedah pewarisan salinan, salinan atribut:

Kaedah ini berbeza daripada yang sebelumnya Memandangkan sambungan prototaip kanak-kanak telah selesai, tidak perlu menetapkan semula sifat child.prototype.constructor kerana ia tidak akan ditimpa lagi.

Berbanding dengan kaedah sebelumnya, kaedah ini jelas kurang berkesan sedikit. Kerana apa yang dilakukan di sini adalah untuk menyalin prototaip sub-objek satu demi satu. Daripada pertanyaan rantaian prototaip mudah.

Kaedah ini hanya terpakai kepada objek yang mengandungi hanya jenis data asas Semua jenis objek, termasuk fungsi dan tatasusunan, tidak boleh disalin dan ia hanya menyokong hantaran rujukan.

Salin kod Kod adalah seperti berikut:
fungsi extend2(Anak, Ibu Bapa) {
  var p = Induk.prototaip;
  var c = Child.prototype;
  untuk (var i dalam p) {
   c[i] = p[i];
   }
  c.uber = p;
}

var Shape = function(){}
var TwoDShape = function(){}
Shape.prototype.name = 'shape';
Shape.prototype.toString = function(){
kembalikan this.name;
}
extend2(TwoDShape,Shape);
var t = TwoDShape();
t.nama
//-->"bentuk"
t.toString();
//-->"bentuk"
TwoDShape.prototype.name = 'TwoDShape';
t.nama
//-->"Bentuk 2d"
t.toString();
//-->"Bentuk 2d"

TwoDShape.prototype.toString === Shape.prototype.toString
//-->benar
TwoDShape.prototype.name === Shape.prototype.name
//-->palsu

Saya harap artikel ini akan membantu reka bentuk pengaturcaraan JavaScript semua orang.

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