亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Javascript編程之繼承實(shí)例匯總

 更新時(shí)間:2015年11月28日 11:11:18   作者:陳在真Sunny_chen  
這篇文章主要介紹了Javascript編程之繼承實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析匯總了五種常見的繼承技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了Javascript編程之繼承。分享給大家供大家參考,具體如下:

這篇文字是在看完《Javascript 王者歸來》后的整理總結(jié),文章詳細(xì)章節(jié)在 第21章 P537

繼承一般要實(shí)現(xiàn)以下三層含義:

1)子類實(shí)例可以共享父類的方法;
2)子類可以覆蓋父類的方法或者擴(kuò)展新的方法;
3)子類和父類都是子類實(shí)例的類型。

一、構(gòu)造繼承法

子類中調(diào)用父類的構(gòu)造函數(shù)來維護(hù)的,該繼承法能實(shí)現(xiàn)多重繼承,但只能繼承父類的共有方法,無法繼承靜態(tài)方法,而且不能用instanceof來驗(yàn)證實(shí)例。

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

二、原型繼承法/經(jīng)典繼承法

該繼承法是通過復(fù)制已經(jīng)存在的原型對象來實(shí)現(xiàn)行為重用,讓對象實(shí)例共享原型對象的屬性。支持多重繼承,繼承原型靜態(tài)方法,能用instanceof來驗(yàn)證實(shí)例。

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

三、實(shí)例繼承法/寄生構(gòu)造函數(shù)模式

構(gòu)造法不能繼承類型的靜態(tài)方法,原型繼承得不完善(某些核心對象的不可枚舉方法不能繼承),而實(shí)例繼承法能對原生核心對象或者DOM對象進(jìn)行繼承,它通過在類型中構(gòu)造對象并返回的辦法來實(shí)現(xiàn)繼承,因此instanceof驗(yàn)證會是false,不支持多重繼承。

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

四、拷貝繼承法

該方法通過拷貝基類對象的所有可枚舉屬性和方法來模擬繼承,因此它可以模擬多繼承,但不能枚舉的就無法繼承;它可以繼承父類的靜態(tài)方法;

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

五、混合繼承法

顧名思義就是把上面幾種繼承法綜合起來,取長補(bǔ)短,讓繼承更完善。常見的有 構(gòu)造+原型繼承:偽經(jīng)典繼承

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

六、各種繼承法的優(yōu)缺點(diǎn)

希望本文所述對大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評論