Class的繼承 ES6重刷21

2021-09-28 19:15:46 字數 1759 閱讀 7545

關於class繼承方面的記錄,我依舊會按照阮老師在es6書中class的繼承這一章節的目錄,將自己的感想記錄下來。

一、簡介

先來欣賞下es5和es6實現繼承的一般方法

// es5做法【直接操控原型鏈實現繼承,極其不靈活,還易錯】

function

mankind()

object.

assign

(mankind.prototype,})

function

firends

(name)

const mankind =

newmankind()

firends.prototype =

` }

}const firend =

newfirends

('小埋'

) console.

log(firend, firend.

sleep()

, firend.

sayname()

)// firends "this is sleep way!" "the student name is 小埋"

// es6做法【利用class語法糖中的extend關鍵字實現繼承,靈活不易錯,簡單好維護】

class

person

}class

student

extends

person

sayname()

` }

}const student =

newstudent

('小櫻'

) console.

log(student, student.

sleep()

, student.

sayname()

)// student "this is sleep way!" "the student name is 小櫻"

es5的實現繼承是先例項化父類,再將父類例項化物件設定為子類的prototype屬性,從而實現繼承。相比刻板而又易錯的es5繼承方式,es6可謂是簡潔清爽,簡明了當,es6 的繼承機制完全不同,實質是先將父類例項物件的屬性和方法,加到this上面(所以必須先呼叫super方法),然後再用子類的建構函式修改this。

二、object.getprototypeof()

object.getprototypeof方法可以用來從子類上獲取父類。

object.

getprototypeof

(student)

=== person

// true

因此,可以使用這個方法判斷,乙個類是否繼承了另乙個類。

三、super關鍵字

1、作為函式

代表呼叫父類的建構函式,但是返回的是子類b的例項,即super內部的this指的是子類的例項,因此super()在這裡相當於parent.prototype.constructor.call(this)

2、作為物件

super作為物件時,在普通方法中,指向父類的原型物件

變數的解構 ES6重刷02

解構 解構分為兩中,一種為解,另外一種為構 通俗易懂的講就是解包 打包 原始包 const obj 解包 const obj 打包 const test test 解包的情形及注意點 陣列的解包,佔位一一對應,超出則為undefined let a,b d 1,2 3 4 a 1 b 2 d 4物件...

陣列的擴充套件 ES6重刷08

在此我會著重講擴充套件運算子 三點運算子 結合對於陣列的一些便捷操作及深拷貝 其次講講array例項的某些新的方法及注意事項 略帶iterator介面個返回值為iterator遍歷器物件的genrator函式function 最後講講哪些資料結構存在內建部署的iterator介面,而對於沒有內建部署...

物件的擴充套件 ES6重刷09

物件擴充套件 一 屬性簡潔表示 const a a constb b const obj console.log obj 二 屬性名表示式 let obj const variable b obj.a a obj variable b console.log obj 三 屬性特性 可配置性 conf...