關於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...