Rumah  >  Artikel  >  hujung hadapan web  >  Laksanakan polimorfisme dalam js menggunakan kaedah yang serupa dengan kemahiran inheritance_javascript

Laksanakan polimorfisme dalam js menggunakan kaedah yang serupa dengan kemahiran inheritance_javascript

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

Polymorphism boleh dilaksanakan dengan cara yang serupa dengan pewarisan. Pertama tentukan kelas abstrak, yang memanggil beberapa kaedah maya tidak ditakrifkan dalam kelas abstrak, tetapi dilaksanakan melalui kelas pelaksanaan khusus.

Seperti dalam contoh berikut:

Object.extend=function(destination,source){ 
for(property in source){ 
destination[property]=source[property]; 
} 
return destination; 
} 
//定义一个抽象基类base,无构造函数 
function base(){}; 

base.prototype={ 
initialize:function(){ 
this.oninit();//调用了一个虚方法 
} 
} 
function SubClassA(){ 
//构造函数 
} 
SubClassA.prototype=Object.extend({ 
propInSubClassA:"propInSubClassA", 
oninit:function(){ 
alert(this.propInSubClassA); 
} 
},base.prototype); 

function SubClassB(){ 
//构造函数 
} 
SubClassB.prototype=Object.extend({ 
propInSubClassB:"propInSubClassB", 
oninit:function(){ 
alert(this.propInSubClassB); 
} 
},base.prototype); 

var objA=new SubClassA(); 
objA.initialize();//输出"propInSubClassA" 

var objB=new SubClassB(); 
objB.initialize();//输出"propInSubClassB"

Pertama, asas kelas asas abstrak ditakrifkan, dan kaedah oninit dipanggil dalam kaedah permulaan kelas asas, tetapi pelaksanaan atau pengisytiharan kaedah oninit tidak digunakan dalam kelas asas. Kelas SubClassA dan SubClassB mewarisi daripada kelas asas, dan melaksanakan kaedah oninit dengan cara yang berbeza.

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