原型鏈機(jī)制:
在ECMAscript中描述了原型鏈的概念,并將原型鏈作為實(shí)現(xiàn)繼承的主要方法,其基本思想就是利用原型讓一個(gè)引用類型繼承另一個(gè)引用類型的屬性和方法。
構(gòu)造函數(shù)和原型還有實(shí)例之間的關(guān)系:
每個(gè)構(gòu)造函數(shù)都有一個(gè)原型對(duì)象(prototype),原型對(duì)象都包含一個(gè)指向構(gòu)造函數(shù)的指針(constructor),而實(shí)例都包含一個(gè)指向原型對(duì)象的內(nèi)部指針 ( __propto__ ) 。關(guān)系圖如下圖所示:
每一個(gè)Function都是Object基類的一個(gè)實(shí)例,所以每一個(gè)Function上都有一個(gè)__proto__指向了Object.prototype。
當(dāng)查找一個(gè)實(shí)例的屬性時(shí),會(huì)先從這個(gè)實(shí)例的自定義屬性上找,如果沒有的話通過__proto__去實(shí)例所屬類的原型上去找,如果還沒有的話再通過原型(原型也是對(duì)象,只要是對(duì)象就有__proto__屬性)的__proto__到Object的原型上去找,一級(jí)一級(jí)的找,如果沒有就undefined。
所以引用類型之間的繼承就是通過原型鏈機(jī)制實(shí)現(xiàn)的。
一.原型繼承
原型繼承:把父類的私有+公有的屬性和方法,都作為子類公有的屬性。
核心:不是把父類私有+公有的屬性克隆一份一模一樣的給子類的公有。他是通過__proto__建立和子類之間的原型鏈,當(dāng)子類的實(shí)例需要使用父類的屬性和方法的時(shí)候,可以通過__proto__一級(jí)級(jí)找上去使用?!?/p>
function Parent(){ this.x = 199; this.y = 299; } Parent.prototype.say = function(){ console.log('say') } function Child(){ this.g = 90; } Child.prototype = new Parent(); var p = new Parent(); var c = new Child(); console.dir(c)
網(wǎng)頁題目:JavaScript常見的繼承方式匯總-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://www.rwnh.cn/article40/gieho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、服務(wù)器托管、網(wǎng)站策劃、小程序開發(fā)、全網(wǎng)營銷推廣、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容