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

javascript原型鏈繼承用法實(shí)例分析

 更新時(shí)間:2015年01月28日 11:16:43   投稿:shichen2014  
這篇文章主要介紹了javascript原型鏈繼承用法,實(shí)例分析了javascript原型鏈繼承中的技巧與相關(guān)注意事項(xiàng),非常具有實(shí)用價(jià)值,需要的朋友可以參考下

本文實(shí)例分析了javascript原型鏈繼承的用法。分享給大家供大家參考。具體分析如下:

復(fù)制代碼 代碼如下:
function Shape(){ 
 this.name = 'shape'; 
 this.toString = function(){ 
  return this.name; 
 } 

 
function TwoDShape(){ 
 this.name = '2D shape'; 

function Triangle(side,height){ 
 this.name = 'Triangle'; 
 this.side = side; 
 this.height = height; 
 this.getArea = function(){ 
  return this.side*this.height/2; 
 }; 

 
/* inheritance */ 
TwoDShape.prototype = new Shape(); 
Triangle.prototype = new TwoDShape();
 

當(dāng)我們對(duì)對(duì)象的prototype屬性進(jìn)行完全重寫時(shí),有時(shí)候會(huì)對(duì)對(duì)象constructor屬性產(chǎn)生一定的負(fù)面影響。
所以,在我們完成相關(guān)的繼承關(guān)系設(shè)定后,對(duì)這些對(duì)象的const屬性進(jìn)行相應(yīng)的重置是一個(gè)非常好的習(xí)慣。如下所示:

復(fù)制代碼 代碼如下:
TwoDShape.prototype.constructor = TwoDShape; 
Triangle.prototype.constructor = Triangle;

改寫:

復(fù)制代碼 代碼如下:
function Shape(){} 
 
Shape.prototype.name = 'shape'; 
Shape.prototype.toString = function(){ 
 return this.name; 

 
function TwoDShape(){} 
 
TwoDShape.prototype = new Shape(); 
TwoDShape.prototype.constructor = TwoDShape; 
 
TwoDShape.prototype.name = '2d shape'; 
 
function Triangle(side,height){ 
 this.side = side; 
 this.height = height; 

 
Triangle.prototype = new TwoDShape; 
Triangle.prototype.constructor = Triangle; 
 
Triangle.prototype.name = 'Triangle'; 
Triangle.prototype.getArea = function(){ 
 return this.side*this.height/2; 
}

再改寫(引用傳遞而不是值傳遞):

復(fù)制代碼 代碼如下:
function Shape(){} 
 
Shape.prototype.name = 'shape'; 
Shape.prototype.toString = function(){ 
 return this.name; 

 
function TwoDShape(){} 
 
TwoDShape.prototype = Shape.prototype; 
TwoDShape.prototype.constructor = TwoDShape; 
 
TwoDShape.prototype.name = '2d shape'; 
 
function Triangle(side,height){ 
 this.side = side; 
 this.height = height; 

 
Triangle.prototype = TwoDShape.prototype; 
Triangle.prototype.constructor = Triangle; 
 
Triangle.prototype.name = 'Triangle'; 
Triangle.prototype.getArea = function(){ 
 return this.side*this.height/2; 
}

雖然提高了效率,但是這樣的方法有個(gè)副作用,因?yàn)槭且脗鬟f,而不是值傳遞,所以“父對(duì)象”中的name值受到了影響。
子對(duì)象和父對(duì)象指向的是同一個(gè)對(duì)象。所以一旦子對(duì)象對(duì)其原型進(jìn)行修改,父對(duì)象也會(huì)隨即被改變。

再再改寫(使用臨時(shí)構(gòu)造器):

復(fù)制代碼 代碼如下:
function Shape(){} 
Shape.prototype.name = 'shape'; 
Shape.prototype.toString = function(){ 
 return this.name; 

function TwoDShape(){} 
var F = function(){} 
F.prototype = Shape.prototype; 
TwoDShape.prototype = new F(); 
TwoDShape.prototype.constructor = TwoDShape; 
TwoDShape.prototype.name = '2d shape'; 
function Triangle(side,height){ 
 this.side = side; 
 this.height = height; 

F.prototype = TwoDShape.prototype; 
Triangle.prototype = new F(); 
Triangle.prototype.constructor = Triangle; 
Triangle.prototype.name = 'Triangle'; 
Triangle.prototype.getArea = function(){ 
 return this.side*this.height/2; 
}

雖然提高了效率,但是這樣的方法有個(gè)副作用,因?yàn)槭且脗鬟f,而不是值傳遞,所以“父對(duì)象”中的name值受到了影響。

子對(duì)象和父對(duì)象指向的是同一個(gè)對(duì)象。所以一旦子對(duì)象對(duì)齊原型進(jìn)行修改,父對(duì)象也會(huì)隨即被改變。

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

相關(guān)文章

  • js數(shù)組如何添加json數(shù)據(jù)及js數(shù)組與json的區(qū)別

    js數(shù)組如何添加json數(shù)據(jù)及js數(shù)組與json的區(qū)別

    在JSON中,有兩種數(shù)據(jù)結(jié)構(gòu):對(duì)象和數(shù)組。本篇文章給大家介紹js數(shù)組如何添加json數(shù)據(jù)以及js數(shù)組和json的區(qū)別,涉及到j(luò)s json數(shù)組添加相關(guān)知識(shí),感興趣的朋友可以參考下本篇文章
    2015-10-10
  • Require.JS中的幾種define定義方式示例

    Require.JS中的幾種define定義方式示例

    這篇文章主要給大家介紹了關(guān)于Require.JS中幾種define定義方式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • JavaScript中閉包的詳解

    JavaScript中閉包的詳解

    本文主要介紹了JavaScript中閉包的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-04-04
  • JS中利用FileReader實(shí)現(xiàn)上傳圖片前本地預(yù)覽功能

    JS中利用FileReader實(shí)現(xiàn)上傳圖片前本地預(yù)覽功能

    FileReader 對(duì)象允許Web應(yīng)用程序異步讀取存儲(chǔ)在用戶計(jì)算機(jī)上的文件(或原始數(shù)據(jù)緩沖區(qū))的內(nèi)容,使用 File 或 Blob 對(duì)象指定要讀取的文件或數(shù)據(jù)。下面通過本文給大家介紹JS中利用FileReader實(shí)現(xiàn)上傳圖片前本地預(yù)覽功能,需要的朋友參考下
    2018-03-03
  • js如何打印object對(duì)象

    js如何打印object對(duì)象

    這篇文章主要介紹了js如何打印object對(duì)象,需要的朋友可以參考下
    2015-10-10
  • JavaScript中如何讓?x?==?1?&&?x?==?2?&&?x?==?3?等式成立

    JavaScript中如何讓?x?==?1?&&?x?==?2?&&?x?==?3?等式成立

    這篇文章主要介紹了JavaScript中如何讓x==1&&x==2&&x==3等式成立,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • JavaScript中字符串與Unicode編碼互相轉(zhuǎn)換的實(shí)現(xiàn)方法

    JavaScript中字符串與Unicode編碼互相轉(zhuǎn)換的實(shí)現(xiàn)方法

    這篇文章主要介紹了JavaScript中字符串與Unicode編碼互相轉(zhuǎn)換的實(shí)現(xiàn)方法涉及JavaScript編碼、數(shù)據(jù)類型等的轉(zhuǎn)換技巧,需要的朋友可以參考下
    2015-12-12
  • JS平滑無縫滾動(dòng)效果的實(shí)現(xiàn)代碼

    JS平滑無縫滾動(dòng)效果的實(shí)現(xiàn)代碼

    下面小編就為大家?guī)硪黄狫S平滑無縫滾動(dòng)效果的實(shí)現(xiàn)代碼。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考
    2016-05-05
  • JavaScript之WebSocket技術(shù)詳解

    JavaScript之WebSocket技術(shù)詳解

    這篇文章主要為大家詳細(xì)介紹了JavaScript之WebSocket技術(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • layui動(dòng)態(tài)渲染生成select的option值方法

    layui動(dòng)態(tài)渲染生成select的option值方法

    今天小編就為大家分享一篇layui動(dòng)態(tài)渲染生成select的option值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09

最新評(píng)論

宜川县| 太仆寺旗| 西盟| 江孜县| 岚皋县| 柳州市| 宝应县| 邛崃市| 卢龙县| 玛多县| 托里县| 隆昌县| 哈巴河县| 琼海市| 顺平县| 侯马市| 武功县| 邵东县| 贵定县| 长兴县| 泉州市| 海淀区| 海门市| 汪清县| 汾阳市| 武隆县| 荆州市| 凤冈县| 双辽市| 高安市| 时尚| 大余县| 青浦区| 哈尔滨市| 陇西县| 五台县| 建湖县| 固始县| 泾川县| 平远县| 香河县|