最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript繼承模式粗探

 更新時間:2016年01月12日 14:16:50   作者:卡卡頌  
之前提到了JS中比較簡單的設計模式,在各種設計模式中被最常使用的工具之一就是原型鏈的繼承。作為OOP的特質(zhì)之一——繼承,今天主要談談JS中比較簡單的繼承方法

真正意義上來說Javascript并不是一門面向?qū)ο蟮恼Z言,沒有提供傳統(tǒng)的繼承方式,但是它提供了一種原型繼承的方式,利用自身提供的原型屬性來實現(xiàn)繼承。Javascript原型繼承是一個被說爛掉了的話題,但是自己對于這個問題一直沒有徹底理解,今天花了點時間又看了一遍《Javascript模式》中關于原型實現(xiàn)繼承的幾種方法,下面來談談JS中比較簡單的繼承方法,如果大家有不同意見,歡迎建議。

最基礎的原型鏈繼承在這里就不復述了,主要講一下其他的繼承模式。

1.借用構造函數(shù)繼承

function Father (name) {
this.name=name;
}
function Son (name) {
Father.call(this,name); //在子類型中調(diào)用超類型的構造函數(shù)
this.age=15;
}
var me=new Son("Su"); 

好處:可以為子類型傳遞參數(shù),如圖中的name屬性。

壞處:1.方法在構造函數(shù)中定義,無法復用。2.超類型原型中定義的方法對子類型是不可見的。

2.組合繼承(綜合原型鏈與構造函數(shù))

//超類型構造函數(shù)function Father (name) {
this.name=name;
this.famMember=[];
}//超類型構造函數(shù)原型方法
Father.prototype.sayName=function () {
alert(this.name);
}//子類型構造函數(shù)
function Son (name,age) {
Father.call(this,name); //構造函數(shù)方法
this.age=age;
}
Son.prototype=new Father(); //重寫子類型原型對象
Son.prototype.constructor=Son; //重寫構造函數(shù)屬性指向子類型
Son.prototype.sayAge=function () {
alert(this.age);
} //重寫原型對象后再加入方法
var me=new Son("Su",15);
me.famMember.push("dad","mom"); //子類型可以調(diào)用超類型構造函數(shù)內(nèi)的方法var he=new Son("Li",14);alert(he.famMember); // [] 

好處:不同的子類既可以擁有自己的屬性,也可以使用相同的方法。

壞處:這種方法需要調(diào)用2次超類型的構造函數(shù),同名的屬性方法會被覆蓋一次。

3.原型式繼承 (類似Object.create())

function object (o) {
function F () {}
F.prototype=o;
return new F();
}var obj={}; //將obj對象傳入作為新對象的原型。var me=object(obj); 

使用這種方法繼承需要有一個對象作為原型對象,所以所有繼承其的子類型的屬性方法都是共用的。

ES5通過新增Object.creatr()方法規(guī)范了原型式繼承。

4.寄生式繼承 (可以設置私有方法的原型式繼承)

function object (o) {
function F () {}
F.prototype=o;
return new F();
}
var obj={}; //將obj對象傳入作為新對象的原型。到這里都與原型式繼承相同function creObj(o) {  var clone=object(obj);  clone.sayHi=function () {    alert("Hi");  };return clone; }
var me=creObj(obj); 

好處:這種方式彌補了原型式繼承只有公有屬性方法的缺陷,使子類型能有私有屬性方法。

5.寄生組合式繼承

function inherit (father,son) {
var pro=Object(father.prototype); //創(chuàng)建超類型原型對象的副本
pro.constructor=son;
son.prototype=pro;           //將副本作為子類型的原型對象
} 

本方法用于彌補組合繼承中屬性方法覆蓋的問題。

用上圖代碼代替組合繼承中 Son.prototype=new Father(); 這段代碼。這樣只需調(diào)用一次父類型的構造函數(shù),避免了創(chuàng)造多余不必要的屬性方法,并且保持了原型鏈不改變,是一種理想的引用類型繼承方法。

關于js繼承模式先粗略給大家介紹這么多,相信對大家有所幫助,更多信息請繼續(xù)關注腳本之家網(wǎng)站。

相關文章

  • js實現(xiàn)按鈕顏色漸變動畫效果

    js實現(xiàn)按鈕顏色漸變動畫效果

    這篇文章主要介紹了js實現(xiàn)按鈕顏色漸變動畫效果的方法,涉及javascript鼠標事件及頁面表單元素樣式的動態(tài)操作技巧,需要的朋友可以參考下
    2015-08-08
  • Vue之vue-tree-color組件實現(xiàn)組織架構圖案例詳解

    Vue之vue-tree-color組件實現(xiàn)組織架構圖案例詳解

    這篇文章主要介紹了Vue之vue-tree-color組件實現(xiàn)組織架構圖案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • js實現(xiàn)二級菜單點擊顯示當前內(nèi)容效果

    js實現(xiàn)二級菜單點擊顯示當前內(nèi)容效果

    這篇文章主要介紹了js實現(xiàn)二級菜單點擊顯示當前內(nèi)容效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • 詳解javascript跨瀏覽器事件處理程序

    詳解javascript跨瀏覽器事件處理程序

    這篇文章主要為大家詳細介紹了javascript跨瀏覽器事件處理機制,感興趣的小伙伴們可以參考一下
    2016-03-03
  • axios使用攔截器統(tǒng)一處理所有的http請求的方法

    axios使用攔截器統(tǒng)一處理所有的http請求的方法

    這篇文章主要介紹了axios使用攔截器統(tǒng)一處理所有的http請求的方法,通過一段實例代碼給大家介紹了axios攔截器使用,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • javascript中json基礎知識詳解

    javascript中json基礎知識詳解

    本文主要介紹了json的基礎知識。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • 老生常談js中的MVC

    老生常談js中的MVC

    下面小編就為大家?guī)硪黄仙U刯s中的MVC。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • SOSO地圖JS畫出標注和中心點以html形式運行

    SOSO地圖JS畫出標注和中心點以html形式運行

    SOSO地圖想必大家都知道吧,本文將為大家詳細介紹下使用JS畫出標注和中心點,直接貼出代碼,感興趣的朋友可以參考下
    2013-08-08
  • JS動態(tài)插入腳本和插入引用外部鏈接腳本的方法

    JS動態(tài)插入腳本和插入引用外部鏈接腳本的方法

    js 動態(tài)插入腳本的是在頁面加載時不存在,但將來的某一時刻通過修改該 DOM 動態(tài)添加的腳本。接下來通過本文給大家介紹JS動態(tài)插入腳本和插入引用外部鏈接腳本,需要的朋友可以參考下
    2018-05-05
  • js實現(xiàn)飛入星星特效代碼

    js實現(xiàn)飛入星星特效代碼

    這篇文章主要介紹了js實現(xiàn)飛入星星特效代碼,主要通過控制背景與飛入點的樣式,結合setTimeout函數(shù)即可實現(xiàn)星星飛入的效果,對于學習javascript有不錯的參考借鑒價值,需要的朋友可以參考下
    2014-10-10

最新評論

汝阳县| 桃江县| 建阳市| 内丘县| 铜川市| 桐庐县| 日喀则市| 香河县| 罗城| 策勒县| 华安县| 通山县| 玉溪市| 武清区| 昌黎县| 绥芬河市| 临沧市| 柘城县| 荔波县| 图们市| 罗定市| 安阳县| 诏安县| 左权县| 呼和浩特市| 柯坪县| 新田县| 黎川县| 长宁县| 遂川县| 泰安市| 土默特左旗| 卢龙县| 衡阳市| 千阳县| 临泉县| 兰坪| 花垣县| 扶余县| 仁寿县| 长海县|