es6 super關(guān)鍵字的理解與應(yīng)用實例分析
本文實例講述了es6 super關(guān)鍵字的理解與應(yīng)用。分享給大家供大家參考,具體如下:
前面介紹了static關(guān)鍵字,class類還有另外一個關(guān)鍵字super
super不僅僅是一個關(guān)鍵字,還可以作為函數(shù)和對象。
函數(shù):在子類繼承父類中,super作為函數(shù)調(diào)用,只能寫在子類的構(gòu)造函數(shù)(constructor)里面,super代表的是父類的構(gòu)造函數(shù),
難點理解
但是執(zhí)行過時supre()代表的是子類,super()里面的this指向子類的實例對象this。
class A {
constructor() {
console.log(new.target.name);
}
}
class B extends A {
constructor() {
super();//這里的super相當(dāng)于A類的constructor構(gòu)造函數(shù),會執(zhí)行A的constructor,但是此時的this指
//向的是B,所以打印出B
//換一種方法理解是:在執(zhí)行super時,A把constructor方法給了B,此時B有了A的功能,但是執(zhí)
//行的是B的內(nèi)容,也就是es5的A.prototype.constructor.call(this)。
}
}
new A() // A
new B() // B
對象:
這里重點理解下對象,概念相對抽象
super作為對象使用時,分為在普通方法中使用和在靜態(tài)方法中使用
在普通方法找中使用:super指向父類的原型,即A.prototype,可以訪問到原型上的方法和屬性
邏輯抽象一:
ES6 規(guī)定,在子類普通方法中通過super調(diào)用父類的方法時,方法內(nèi)部的this指向當(dāng)前的子類實例。
class A {
constructor() {
this.x = 1;
}
print() {
console.log(this.x);
}
}
class B extends A {
constructor() {
super();
this.x = 2;
}
m() {
super.print();
}
}
let b = new B();
b.m() // 2
super.print()雖然調(diào)用的是A.prototype.print(),但是A.prototype.print()內(nèi)部的this指向子類B的實例
super作為對象,用在靜態(tài)方法之中,這時super將指向父類,而不是父類的原型對象。
class Parent {
static myMethod(msg) {
console.log('static', msg);
}
myMethod(msg) {
console.log('instance', msg);
}
}
class Child extends Parent {
static myMethod(msg) {
super.myMethod(msg);
}
myMethod(msg) {
super.myMethod(msg);
}
}
Child.myMethod(1); // static 1
var child = new Child();
child.myMethod(2); // instance 2
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
- 深入淺析ES6 Class 中的 super 關(guān)鍵字
- es6中class類靜態(tài)方法,靜態(tài)屬性,實例屬性,實例方法的理解與應(yīng)用分析
- ES6 Class中實現(xiàn)私有屬性的一些方法總結(jié)
- es6新特性之 class 基本用法解析
- 解讀ES6中class關(guān)鍵字
- ES6 javascript中Class類繼承用法實例詳解
- ES6 javascript中class類的get與set用法實例分析
- ES6 javascript中class靜態(tài)方法、屬性與實例屬性用法示例
- ES6入門教程之Class和Module詳解
- JavaScript ES6中CLASS的使用詳解
相關(guān)文章
JavaScript中關(guān)鍵字 in 的使用方法詳解
這篇文章主要介紹了JavaScript中關(guān)鍵字 in 的使用方法詳解,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-10-10
原生JS版和jquery版實現(xiàn)checkbox的全選/全不選/點選/行內(nèi)點選(Mr.Think)
腳本之家小編之前整理不少checkbox全選全不選這方便的文章,但看了這篇以后發(fā)現(xiàn)實現(xiàn)方法更好2016-10-10
JS控件ASP.NET的treeview控件全選或者取消(示例代碼)
本篇文章主要是對JS控件ASP.NET的treeview控件全選或者取消的示例代碼進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12
JavaScript實現(xiàn)解析INI文件內(nèi)容的方法
這篇文章主要介紹了JavaScript實現(xiàn)解析INI文件內(nèi)容的方法,結(jié)合實例形式分析了javascript通過自定義函數(shù)實現(xiàn)針對ini文件解析操作的相關(guān)處理技巧,需要的朋友可以參考下2016-11-11
JavaScript宏任務(wù)和微任務(wù)區(qū)別介紹
這篇文章主要介紹了JavaScript宏任務(wù)和微任務(wù)區(qū)別介紹,js中的任務(wù),大致分為2類,一類是同步任務(wù),另一類是異步任務(wù)。而異步任務(wù),又分為宏任務(wù)和微任務(wù),這兩個任務(wù)是兩個隊列,所以是先進先出的2022-07-07
前端Webpack配置之eval-source-map使用方法
eval-source-map 是 Webpack 中 devtool 選項的一種模式,它提供了一種內(nèi)聯(lián) Source Map 的方式,用于開發(fā)環(huán)境中的源代碼映射,這篇文章主要介紹了前端Webpack配置之eval-source-map使用方法,需要的朋友可以參考下2024-12-12
ECharts柱狀圖關(guān)閉鼠標(biāo)hover時的高亮樣式詳解
為了方便使用,echarts的餅圖中給加入了默認(rèn)的hover高亮效果,下面這篇文章主要給大家介紹了關(guān)于ECharts柱狀圖關(guān)閉鼠標(biāo)hover時的高亮樣式的相關(guān)資料,需要的朋友可以參考下2023-04-04

