摘要:原型繼承原型繼承是對類式繼承的一種封裝,其中的過渡對象就相當(dāng)于類式繼承中的子類,只是在原型式中作為一個過渡對象出現(xiàn),目的是創(chuàng)建要返回的新的實(shí)例化對象。寄生式繼承聲明基對象通過原型繼承方式創(chuàng)建新對象返回拓展后的新對象測試代碼
原型繼承
原型繼承是對類式繼承的一種封裝,其中的過渡對象就相當(dāng)于類式繼承中的子類,只是在原型式中作為一個過渡對象出現(xiàn),目的是創(chuàng)建要返回的新的實(shí)例化對象。和類式繼承一樣,父類對象book中指類型的屬性被復(fù)制,引用類型的屬性被共有。
//原型是繼承 function inheritObject(o) { //聲明一個過渡函數(shù)對象 function F(){} //過渡對象的原型繼承父類 F.prototype = o; //返回過渡對象的一個實(shí)例,該實(shí)例的原型繼承了父對象 return new F(); } var book ={ name:"js", alikeBook:["css","html"] }; //測試代碼 var newBook = inheritObject(book); newBook.name ="ajax"; newBook.alikeBook.push("new xml book"); var otherBook = inheritObject(book); otherBook.name ="flash"; otherBook.alikeBook.push("other as book"); console.log(newBook.name);//ajax console.log(newBook.alikeBook);//[ "css", "html", "new xml book", "other as book" ] console.log(otherBook.name);//flash console.log(otherBook.alikeBook);//[ "css", "html", "new xml book", "other as book" ] console.log(book.name);//js console.log(book.alikeBook);//[ "css", "html", "new xml book", "other as book" ]寄生式繼承
寄生式繼承是對原型繼承的第二次封裝,并且在封裝的過程中對繼承對象進(jìn)行了擴(kuò)展,這樣新創(chuàng)建的對象不僅僅有父類中的屬性和方法,而且添加了新的屬性和方法。
//寄生式繼承var newBook = createBook(book);newBook.name = "js";newBook.alikeBook.push("new");var otherBook = createBook(book);otherBook.name = "bad";otherBook.alikeBook.push("other"); //聲明基對象 var book = { name:"js book", alikeBook: ["css","html"] }; function createBook(obj) { //通過原型繼承方式創(chuàng)建新對象 var o = new inheritObject(obj); o.getName = function () { console.log(name); } //返回拓展后的新對象 return o; } //測試代碼 var newBook = createBook(book); newBook.name = "js"; newBook.alikeBook.push("new"); var otherBook = createBook(book); otherBook.name = "bad"; otherBook.alikeBook.push("other"); console.log(newBook.name);//ajax console.log(newBook.alikeBook);//[ "css", "html", "new xml book", "other as book" ] console.log(otherBook.name);//flash console.log(otherBook.alikeBook);//[ "css", "html", "new xml book", "other as book" ] console.log(book.name);//js console.log(book.alikeBook);//[ "css", "html", "new xml book", "other as book" ]
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/97895.html
摘要:很多情況下,通常一個人類,即創(chuàng)建了一個具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍(lán)圖或原型。在中,對象通過對類的實(shí)體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創(chuàng)建了一個具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍(lán)圖或原型。在中,對象通過對類的實(shí)體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創(chuàng)建了一個具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍(lán)圖或原型。在中,對象通過對類的實(shí)體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:動物還有一個貓對象的構(gòu)造函數(shù)。這顯然會導(dǎo)致繼承鏈的紊亂明明是用構(gòu)造函數(shù)生成的,因此我們必須手動糾正,將對象的值改為。這是很重要的一點(diǎn),請務(wù)必注意如果替換了對象,下一步必然是為新的對象加上屬性,并將這個屬性指回原來的構(gòu)造函數(shù)。 原文鏈接 現(xiàn)在有一個動物對象的構(gòu)造函數(shù)。 function Animal() { this.species = 動物; } 還有一個貓對象的構(gòu)造函數(shù)。 fun...
摘要:基于原型的面向?qū)ο笤诨谠偷恼Z言中如并不存在這種區(qū)別它只有對象不論是構(gòu)造函數(shù),實(shí)例,原型本身都是對象。允許動態(tài)地向單個的對象或者整個對象集中添加或移除屬性。為了解決以上兩個問題,提供了構(gòu)造函數(shù)創(chuàng)建對象的方式。 showImg(https://segmentfault.com/img/remote/1460000013229218); 一. 重新認(rèn)識面向?qū)ο?1. JavaScript...
閱讀 3072·2021-10-11 10:58
閱讀 1989·2021-09-24 09:47
閱讀 503·2019-08-30 14:19
閱讀 1684·2019-08-30 13:58
閱讀 1444·2019-08-29 15:26
閱讀 640·2019-08-26 13:45
閱讀 2139·2019-08-26 11:53
閱讀 1772·2019-08-26 11:30