javascript關(guān)于繼承解析
上一篇已介紹了組合繼承,現(xiàn)在講講剩余的幾種繼承。
原型式繼承
調(diào)用一個(gè)函數(shù),接收這個(gè)函數(shù)返回來(lái)的對(duì)象,這個(gè)對(duì)象的原型就是傳入函數(shù)的參數(shù)對(duì)象。
如:
function personObject(o){ function F(){} F.prototype = o; return new F(); } var person = { name:"Nicholas", friends:["Shelby","Court","Van"] } var person_one = personObject(person);
從上面的代碼中,我們知道person是person_one的原型。ES5中添加了一個(gè)方法規(guī)范化原型式繼承,這個(gè)方法是Object.create(),這個(gè)方法有兩個(gè)參數(shù),第一個(gè)是作為新對(duì)象原型的對(duì)象,像上面的person,第二個(gè)是為新對(duì)象定義額外屬性的對(duì)象。第二個(gè)參數(shù)可選。
如:
var person_one = Object.create(person, { name: { value:"Jon" } });
當(dāng)你只想讓一個(gè)對(duì)象與另一個(gè)對(duì)象保持類(lèi)似時(shí),可以使用原型式繼承。
寄生式繼承
在一個(gè)函數(shù)里實(shí)現(xiàn)一次原型式繼承,然后為接收到的這個(gè)對(duì)象添加自己的屬性與方法。
如:
function createAnother(o){ var person_one = personObject(o); person_one.sayHi = function(){ alert(" hi "); } return person_one; }
寄生組合式繼承
組合繼承也有其缺點(diǎn),它實(shí)現(xiàn)了兩次屬性繼承,而寄生組合式繼承就避免了這個(gè)問(wèn)題。實(shí)例通過(guò)構(gòu)造函數(shù)繼承了屬性,而原型的方法則是通過(guò)寄生式繼承的方式來(lái)繼承。
如:
function inherit(subType, superType){ var prototype = Object(superType.prototype); prototype.constructor = subType; subType.prototype = prototype; }
通過(guò)調(diào)用上面的函數(shù),實(shí)現(xiàn)subTye.prototype的原型是superType.prototype,完成了原型方法的繼承。
以上這篇javascript關(guān)于繼承解析就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript數(shù)據(jù)結(jié)構(gòu)和算法之二叉樹(shù)詳解
這篇文章主要介紹了JavaScript數(shù)據(jù)結(jié)構(gòu)和算法之二叉樹(shù)詳解,本文講解了二叉樹(shù)的概念、二叉樹(shù)的特點(diǎn)、二叉樹(shù)節(jié)點(diǎn)的定義、查找最大和最小值等內(nèi)容,需要的朋友可以參考下2015-02-02javascript代碼運(yùn)行不出來(lái)執(zhí)行錯(cuò)誤的可能情況整理
js代碼運(yùn)行不出來(lái)的情況在項(xiàng)目中經(jīng)常發(fā)生,究竟是什么原因呢?在本文整理了一些常見(jiàn)的情況,感興趣的各位朋友可以參考下2013-10-10ajax提交表單實(shí)現(xiàn)網(wǎng)頁(yè)無(wú)刷新注冊(cè)示例
這篇文章主要介紹了ajax提交表單實(shí)現(xiàn)網(wǎng)頁(yè)無(wú)刷新注冊(cè)示例,需要的朋友可以參考下2014-05-05JavaScript 學(xué)習(xí)筆記之語(yǔ)句
這篇文章主要介紹了JavaScript中的語(yǔ)句,包括條件分支語(yǔ)句、循環(huán)語(yǔ)句、迭代語(yǔ)句、Lable語(yǔ)句、break和continue語(yǔ)句、with語(yǔ)句、swith語(yǔ)句,十分全面細(xì)致,推薦給小伙伴們。2015-01-01js限制文本框輸入長(zhǎng)度兩種限制方式(長(zhǎng)度、字節(jié)數(shù))
在實(shí)際應(yīng)用中根據(jù)需要會(huì)用到文本框限制字符長(zhǎng)度,以些新手朋友有們可能還不清楚如何應(yīng)付,本人搜集整理了一些常用技巧,曬出來(lái)和大家分享一下,希望可以幫助你們2012-12-12JavaScript入門(mén)之事件、cookie、定時(shí)等
本文從上一篇文章結(jié)束的地方開(kāi)始,解釋其他的一些基本的JavaScript語(yǔ)言概念,繼續(xù)為初學(xué)者提供對(duì)語(yǔ)言的基礎(chǔ)理解2011-10-10詳解JavaScript對(duì)W3C DOM模版的支持情況
這篇文章主要介紹了詳解JavaScript對(duì)W3C DOM模版的支持情況,在JS前端編程的兼容性方面可作參考使用,需要的朋友可以參考下2015-06-06JavaScript預(yù)編譯和執(zhí)行過(guò)程詳解
本文詳細(xì)講解了JavaScript預(yù)編譯和執(zhí)行過(guò)程,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06推薦JavaScript實(shí)現(xiàn)繼承的最佳方式
本文是介紹了實(shí)用call方法結(jié)合原型鏈方法來(lái)實(shí)現(xiàn)javascript繼承的最佳方式,非常的實(shí)用,有需要的小伙伴可以參考下2014-11-11