填坑-十万个为什么?(24)
生活随笔
收集整理的這篇文章主要介紹了
填坑-十万个为什么?(24)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
簡介:很多概念不清或忘記,重新構(gòu)建自己的知識體系。每天問自己1~多個問題。我是菜鳥 成為大神之路!
1.Es6 Class通過extends關(guān)鍵字實現(xiàn)繼承 Link Class & extends & super
class ColorPoint extends Point {constructor(x, y, color) {super(x, y); // 調(diào)用父類的constructor(x, y)this.color = color;}toString() {return this.color + ' ' + super.toString(); // 調(diào)用父類的toString()} } 復(fù)制代碼①上面代碼中,constructor方法和toString方法之中,都出現(xiàn)了super關(guān)鍵字,它在這里表示父類的構(gòu)造函數(shù),用來新建父類的this對象。
②子類必須在constructor方法中調(diào)用super方法,否則新建實例時會報錯。這是因為子類自己的this對象,必須先通過父類的構(gòu)造函數(shù)完成塑造,得到與父類同樣的實例屬性和方法,然后再對其進行加工,加上子類自己的實例屬性和方法。如果不調(diào)用super方法,子類就得不到this對象。
③在子類的構(gòu)造函數(shù)中,只有調(diào)用super之后,才可以使用this關(guān)鍵字,否則會報錯。這是因為子類實例的構(gòu)建,基于父類實例,只有super方法才能調(diào)用父類實例。
④父類的靜態(tài)方法,也會被子類繼承
2.基于Mixin模式實現(xiàn)多繼承 Link Mixin
Mixin 指的是多個對象合成一個新的對象,新對象具有各個組成成員的接口
將多個類的接口“混入”(mix in)另一個類
function mix(...mixins) {class Mix {}for (let mixin of mixins) {copyProperties(Mix.prototype, mixin); // 拷貝實例屬性copyProperties(Mix.prototype, Reflect.getPrototypeOf(mixin)); // 拷貝原型屬性}return Mix; }function copyProperties(target, source) {for (let key of Reflect.ownKeys(source)) { //Reflect.ownKeys()方法返回一個由目標對象自身的屬性鍵組成的數(shù)組if ( key !== "constructor"&& key !== "prototype"&& key !== "name") {let desc = Object.getOwnPropertyDescriptor(source, key);//方法返回指定對象上一個自有屬性對應(yīng)的屬性描述符。(自有屬性指的是直接賦予該對象的屬性,不需要從原型鏈上進行查找的屬性)Object.defineProperty(target, key, desc);//方法會直接在一個對象上定義一個新屬性,或者修改一個對象的現(xiàn)有屬性, 并返回這個對象。}} } 復(fù)制代碼轉(zhuǎn)載于:https://juejin.im/post/5c3bdaad6fb9a049a57122f4
總結(jié)
以上是生活随笔為你收集整理的填坑-十万个为什么?(24)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: React官方文档学习笔记(二)
- 下一篇: QT修改程序图标