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

javascript原型鏈學習記錄之繼承實現方式分析

 更新時間:2019年05月01日 10:53:58   作者:Klingonsss  
這篇文章主要介紹了javascript原型鏈學習記錄之繼承實現方式,結合實例形式分析了javascript使用原型鏈實現繼承的相關操作技巧與注意事項,需要的朋友可以參考下

本文實例講述了javascript原型鏈學習記錄之繼承實現方式。分享給大家供大家參考,具體如下:

在慕課網學習繼承的筆記:

繼承的幾種方式:

① 使用構造函數實現繼承

function Parent(){
  this.name = 'parent';
}
function Child(){
Parent.call(this); //在子類函數體里面執(zhí)行父類的構造函數
this.type = 'child';//子類自己的屬性
}

Parent.call(this),this即實例,使用this執(zhí)行Parent方法,那么就用this.name = 'parent'把屬性

掛載在了this(實例)上面,以此實現了繼承。

缺點:以上只是讓Child得到了Parent上的屬性,Parent的原型鏈上的屬性并未被繼承。

② 使用原型鏈實現繼承

function Parent(){
  this.name = 'parent';
}
function Child(){
  this.type = 'child';
}
Child.prototype = new Parent();

解釋:Child.prototype === Chlid實例的__proto__ === Child實例的原型

所以當我們引用new Child().name時,Child上沒有,然后尋找Child的原型child.__proto__Child.prototypenew Parent(),Parent的實例上就有name屬性,所以Child實例就在原型鏈上找到了name屬性,以此實現了繼承。

缺點:可以看出,Child的所有實例,它們的原型都是同一個,即Parent的實例:

var a = new Child();
var b = new Child();
a.__proto === b.__proto__; //true

所以,當使用 a.name = 'a'重新給name賦值時,b.name也變成了'a',反之亦然。

用instanceof和constructor都無法確認實例到底是Child的還是Parent的。

③ 結合前兩種取長補短

function Parent(){
  this.name = 'parent';
}
function Child(){
  Parent.call(this);
  this.type = 'child';
}
Child.prototype = new Parent();

缺點:在Child()里面用Parent.call(this);執(zhí)行了一次Parent(),然后又使用Child.prototype = new Parent()執(zhí)行了一次Parent()。

改進1:

function Parent(){
  this.name = 'parent';
}
function Child(){
  Parent.call(this);
  this.type = 'child';
}
Child.prototype = Parent.prototype;

缺點:用instanceof和constructor都無法確認實例到底是Child的還是Parent的。

原因: Child.prototype = Parent.prototype直接從Parent.prototype里面拿到constructor,即Parent。

改進2:

function Parent(){
  this.name = 'parent';
}
function Child(){
  Parent.call(this);
  this.type = 'child';
}
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;

畫圖說明吧:

var a = new Child();

所以這樣寫我們就構造出了原型鏈。

更多關于JavaScript相關內容還可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

相關文章

  • js+cavans實現圖片滑塊驗證

    js+cavans實現圖片滑塊驗證

    這篇文章主要為大家詳細介紹了js+cavans實現圖片滑塊驗證,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • JS正則表達式獲取分組內容的方法詳解

    JS正則表達式獲取分組內容的方法詳解

    這篇文章主要介紹了JS正則表達式獲取分組內容的方法,有需要的朋友可以參考一下
    2013-11-11
  • Javascript中暫停功能的實現代碼

    Javascript中暫停功能的實現代碼

    Javascript中暫停功能的實現代碼...
    2007-03-03
  • JavaScript數組合并案例講解

    JavaScript數組合并案例講解

    這篇文章主要介紹了JavaScript數組合并案例講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • Bootstrap select實現下拉框多選效果

    Bootstrap select實現下拉框多選效果

    這篇文章主要為大家詳細介紹了Bootstrap select實現下拉框多選效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 基于JS實現計算24點算法代碼實例解析

    基于JS實現計算24點算法代碼實例解析

    這篇文章主要介紹了基于JS實現計算24點算法代碼實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • JS實現的楊輝三角【帕斯卡三角形】算法示例

    JS實現的楊輝三角【帕斯卡三角形】算法示例

    這篇文章主要介紹了JS實現的楊輝三角【帕斯卡三角形】算法,結合實例形式分析了楊輝三角的原理及javascript實現楊輝三角的相關操作技巧,需要的朋友可以參考下
    2019-02-02
  • JS中offset和勻速動畫詳解

    JS中offset和勻速動畫詳解

    這篇文章主要介紹了JavaScript動畫:offset和勻速動畫詳解(含輪播圖的實現),并把實現代碼做了分享,有興趣的朋友參考下。
    2018-02-02
  • JS實現可控制的進度條

    JS實現可控制的進度條

    這篇文章主要為大家詳細介紹了JS實現可控制的進度條,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 一個高效的JavaScript壓縮工具下載集合

    一個高效的JavaScript壓縮工具下載集合

    這里介紹的是一些比較常用的js 壓縮工具,隨著問題的不斷解決,好用的工具要經得起考驗。
    2007-03-03

最新評論

永济市| 太和县| 昌邑市| 麟游县| 广平县| 宁强县| 昂仁县| 凌云县| 聊城市| 曲沃县| 阿克苏市| 新昌县| 淳安县| 阜新| 科尔| 淅川县| 固阳县| 梁河县| 德州市| 张家口市| 科技| 兴文县| 沁源县| 抚州市| 安西县| 平潭县| 夹江县| 五峰| 乐亭县| 平潭县| 神农架林区| 阜新| 百色市| 加查县| 新宾| 阜南县| 临湘市| 黔江区| 岳阳县| 济宁市| 垫江县|