11 03 繼承,原型鏈 組合繼承

2021-10-10 05:06:39 字數 569 閱讀 4129

1.介面繼承在ecmascript中是不可能的,因此實現繼承是ecmascript唯一支援的繼承方式,因此顯示中主要是通過原型鏈繼承。

subtype的原型指向supertype的原型,因此繼承它的所有原型上的屬性和方法,若例項把所繼承來的方法遮避了,相當於建構函式下的方法被重寫了。

2.原型和繼承的關係:

(1)instanceof():例項的原型鏈**現過相應的函式—>返回true。

(2)isprototypeof()

3.重點理解:

以物件字面量方式建立原型方法會破壞之前的原型鏈,相當重寫原型鏈。

解決方法:

(1)盜用建構函式,用call():

優點:傳遞引數。

缺點:需在建構函式中定義方法,因此函式不能呼叫。

因此,採用組合繼承:

組合繼承(為經典繼承):綜合了原型鏈和盜用建構函式。

基本思路:

使用原型鏈繼承原型上的屬性和方法,而通過盜用建構函式繼承例項屬性。

原型 原型鏈 繼承

原型 是function物件的乙個屬性,它定義了建構函式 製造出的物件 的公共祖先。通過該建構函式產生的物件,可以繼承該原型的屬性和方法。原型也是物件 這定義有點模糊,用 解釋一下 我們在控制台中列印出了這個,首先son物件的建構函式是foo,但是我們的foo中什麼屬性都沒有,怎麼會出現乙個 pro...

原型 原型鏈 繼承

在 js 中,一切皆物件!下面就讓我們從建立物件開始,逐步學習js中的核心知識 原型,原型鏈,繼承等 1.字面量方式建立物件 var obj var obj1 2.使用 new object 的方式建立物件 var obj2 new object obj2.name 張三 obj2.age 13 o...

JS組合繼承相比原型鏈繼承的優勢

原型繼承 父 建構函式 function father this.name foo this.family jack tom james father.prototype.sayname function console.log this.name father.prototype.sayfamil...