ES6深入学习记录(一)class方法相关
今天學習class相關的一些使用方法,著重在于class extends
?class之間可以通過extends關鍵字實現繼承,這比ES5的通過修改原型鏈實現繼承,要清晰和方便很多。
上面的代碼定義了一個?Test 類,該類通過?extends?關鍵字,繼承了?Point?類的所有屬性和方法。但是由于沒有部署任何代碼,所以這兩個類完全一樣,等于復制了一個Point類。
super 方法
代碼中,constructor?方法和?toString 方法之中都出現了?super?關鍵字,它在這里表示父類的構造函數,用來新建父類的this對象。
子類必須在 constructor 方法中調用 super 方法,否則新建實例時會報錯。這是因為子類沒有自己的 this 對象,而是繼承父類的 this 對象,然后對其進行加工。如果不調用 super 方法,子類就得不到this 對象。說白了,super 方法就是子類繼承父類 this 對象的一個方法。
?
?
?
上面是生成子類實例的代碼,實例對象 cd 同時事 Test 和 Point 兩個類的實例,這與ES5的行為完全一致。
?
類的 prototype 屬性 和 __proto__ 屬性 (還挺重要的,涉及原型鏈)
在es5實現上,每一個對象都有 __proto__ 屬性,指向對應的構造函數的 prototype 屬性。class 作為構造函數的語法糖,同時有prototype 屬性和__proto__ 屬性,因此同時存兩條繼承鏈。
1. 子類的 __proto__ 屬性,表示構造函數的繼承,總是指向父類。
2. 子類的 prototype 屬性的 __proto__ 屬性,表示方法的繼承,總是指向父類的 prototype 屬性。
?
上面的代碼中,子類B的 __proto__ 屬性 指向父類A,子類B的 prototype 屬性的__proto__屬性指向父類A的prototype屬性。
總結:今天學習了 class extends 繼承的原理,以及一些關于原型鏈的拓展。
轉載于:https://www.cnblogs.com/tim100/p/6102810.html
總結
以上是生活随笔為你收集整理的ES6深入学习记录(一)class方法相关的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机qq网名怎么改不了
- 下一篇: 亏吗 不懂价(⊙﹏⊙)